最初はRails 5で--apiタグを使用して作成しました。
から http://edgeguides.rubyonrails.org/api_app.html 、
私は削除しました config.api_only = true
私が変更され
class ApplicationController < ActionController::API
end
に
class ApplicationController < ActionController::Base
end
私が今抱えている問題は、ビューがレンダリングされるときです。 welcome/index.html.erb
、対応するCSSファイルassets/stylesheets/welcome.css.scss
ではありません。
これを修正する方法、またはより一般的にAPIアプリケーションを完全なアプリに変換する方法はありますか?
ありがとう!
私はこれと同じ問題に遭遇し、私はそれを解決したと信じています。変換するための単純なRailsジェネレーターを見つけたいと思っていましたが、何かを見逃していない限り、それほど簡単ではありません。ただし、Railsは、それを簡単にします。完全に手動で行うよりも。
重要なのは、Rails new
コマンドを既存のアプリで使用できることです。この回答は、gitの使用方法を知っていて、既存のアプリで使用していることを前提としていることに注意してください。
まず、そして最も重要なことは、新しいブランチを作ることです。これは2つの機能を果たします。1)作業を台無しにしても作業を失うことはありません(GitHubのようにバックアップするのは良い時期かもしれませんが)。2)次のファイルを比較できます。このプロセスの後で競合し、このプロセスが上書きするすべての作業を取得します(私にとってはそれほど多くはありませんでしたが、重要でした)。
ターミナルで、アプリのディレクトリからAPIのみから標準に変更します。次のコマンドを実行して1つのディレクトリに移動し、Rails既存のプロジェクトの上に新しいプロジェクトを書き込みます。最初にアプリを作成したときに使用した2番目のコマンドで同じオプションを使用します。たとえば、 、私にとっては、以下の[options]
を-d postgresql --skip-turbolinks --skip-spring -T
に置き換えました。これは、これらがアプリの作成時に使用したオプションだからです。--skip-bundle
フラグを使用しているのは、Gemfileが必要以上に変更される可能性があるためです。それもまた、バンドルする前にその一部を元に戻したいと思うでしょう。
$ cd ..
$ Rails new your_app_name --skip-bundle [options]
これで、Railsは、新しいアプリのすべてのファイルを作成する通常のプロセスを実行しますが、今回は、既に存在するため、ほとんどすべてのファイルをスキップします。停止します。競合が発生しているそれぞれについて、競合を1つずつ分析する必要があります。
競合するファイルで私がうまくいったことは次のとおりです。
d
を送信して、違いを確認してください。Y
で許可します。結局、これを行っているのはそのためです。n
で拒否します。Y
で受け入れます。これが終了したら、gitを使用して、書き留めた(4)との各ファイルの違いを調べます。 Railsが追加された変更を保持する必要がありますが、削除したすべてのコードをコピーして戻す必要があります。これにはおそらくGemfileが含まれます。
注目すべき違いの1つは、RailsがアプリケーションコントローラーをActionController::API
からActionController::Base
に継承するように変更することです。それぞれに1つのコントローラーが必要なので、新しいファイル `app /を作成しました。次に、元のApplicationControllerにあったものを新しいファイルにコピーし、クラス名をApiControllerに変更しました。次に、既存のすべてのAPIコントローラーを、ApplicationControllerからではなく新しいApiControllerから継承するように変更しました。
その後、bundle install
を実行して、アプリに追加されたgem Railsをインストールします。
それは私のために働いた。お役に立てば幸いです。幸運を!
Apiアプリケーションの外部のディレクトリ(その親など-cd ..
)から
Rails new comparison_real_app
次に、comparison_real_app
の内容をアプリと比較し、不足しているファイルをapiアプリにコピーし、必要に応じて他のファイルを変更します。
したがって、私(あなた)が進むにつれて、おそらくもっと多くのことを行う必要がありますが、スタイルシートの問題を解決するには、views/layouts/application.html.erb
ファイルとassets/stylesheets/application.css
ファイルを手動で作成する必要があります。