1

Rails 2.3.14 アプリから Rails 3.2.1 にアップグレード中です。これまでのところ、レガシー アセット リソースへのルートを指定できないことが唯一の問題です。

config/application.rbで:

config.assets.enabled = false

以下は機能します(パスが正しくありません):

resources :company_assets, :controller => 'assets', :as => :assets

もちろん、パスは'/company_assets/*'です。

'/assets/*'になるようにパスを作成しようとするとすぐに、ルートの生成に失敗します。「生成に失敗する」とは、次を実行することを意味します。

rake routes | grep assets

何も見せません。

正しく生成されないルートの例を次に示します。

resources :company_assets, :controller => 'assets', :as => :assets, :path => 'assets'

# or

resources :assets

Rails コンソールを調べてみると、アセット関連のルートがあるように見えますが、それらは次のように指定したのと同等のようです。

resource :assets

それ以外の:

resources :assets

(単数対複数に注意)

既存のパスを壊すことなく、ここで後方互換性を維持することは可能ですか?

4

1 に答える 1

3

はい、可能です。

これが発生する理由は、Sprockets (アセット パイプラインを処理する) が /assets ルートを引き継ぐためです。

これを に追加することで、Sprockets が使用するルートを変更できますapplication.rb

config.assets.prefix     = "/x"

x は新しいルートです。

paperclip はファイルを /assets に保存していたため、実稼働アプリの 1 つでこれを行います。

アップグレードに関する 1 つのヒント: アップグレードしたアプリのパイプライン設定を、アセット パイプライン ガイドの最後のセクションにある設定と比較して確認してください。

于 2012-02-08T20:10:45.287 に答える