質問

私は宝石(gmaps4rails)としてバンドルしたエンジンを構築しています。 Railsアプリの /publicでエンジンの /公開をコピーしました。

開発ではすべてが正常に機能しますが、生産では機能しません。(エンジンとメインアプリの)静的資産が見つからないようです。

ログは次のことを示します(ただの要約):

Started GET "/javascripts/application.js?1286294679" for 127.0.0.1 at Wed Nov 24 00:22:20 +0100 2010

ActionController::RoutingError (No route matches "/javascripts/application.js"):


Rendered /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/gems/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.1ms)


Started GET "/stylesheets/gmaps4rails.css?1290554221" for 127.0.0.1 at Wed Nov 24 00:22:20 +0100 2010

ActionController::RoutingError (No route matches "/stylesheets/gmaps4rails.css"):

私はいくつかのことをしました:

  1. 私のアプリのproduction.rbで、私は次のように設定します:

    config.serve_static_assets = true

    これは問題を解決しますが、十分にエレガントではありません。それを虚偽に保ち、エンジンに構成を追加したいと思います:)

  2. 私はアドバイスに従いました ここ 成功せずに。

役に立ちましたか?

解決

パフォーマンスの理由で、生産モードでは、サービングの静的資産が無効になります。 Webサーバーは、これらの資産を提供するように構成する必要があります。

これを見てください 討論 NginxをWebサーバーとして使用している場合。

他のヒント

Rails 3.xで、これをconfig/environments/production.rbで設定してみてください

config.serve_static_assets = true

デフォルトでは、RailsはAssets Server(Lightttp、nginx、またはApache)を使用していると想定しています

エンジンで、交換してください。

initializer "static assets" do |app|
  app.middleware.use ::ActionDispatch::Static, "#{root}/public"
end

と:

initializer "static assets" do |app|
      app.middleware.insert_before(::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public")
end

これをRailsに追加してみましたか::エンジンクラス:

initializer "static assets" do |app|
  app.middleware.use ::ActionDispatch::Static, "#{root}/public"
end

これは、実行時に宝石 /パブリックディレクトリとアプリとマージされます。

Rails 3.1エンジンに取り付けられた同様の問題がありました。私は舞台と生産で空白の資産を受け取っていました。

で解決策を見つけました http://jonswope.com/2010/07/25/rails-3-engines-plugins-and-tatic-assets/comment-page-1/#comment-87 Rails 3.1資産の場所に合わせて調整しました。

initializer "static assets" do |app|
  app.middleware.insert_before ::Rack::Lock, ::ActionDispatch::Static, "#{root}/app/assets"
end

もっとエレガントな方法があると思いますが、今日の私の努力は実質的なものを生み出しませんでした。

私は方法についてあまり知りません、宝石はパッケージ化/作られています。しかし、なぜgemsパブリックフォルダーの画像/js/cssのものをアプリパブリックフォルダーにコピーできないのですか?私はちょうどそれをしました、そしてそれは私のために働きました。それは完了したことではありませんか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top