私は最近、アプリケーションをRails 3.0から3.1にアップグレードしました。私は、資産のパイプラインを有効にするために見つけることができる任意の指示に従ってきたが、生産環境での際には、必ず失敗します。ダイジェストが欠落しているRailsのアセットパイプラインが運用環境で動作していませんか?
<script src="/javascripts/application.js" type="text/javascript"></script>
<%= javascript_include_tag "application" %>
が私に与え、私を得ます次のエラー:
cache: [GET /javascripts/application.js] miss
Started GET "/javascripts/application.js" for 127.0.0.1 at 2011-10-03 23:31:36 +0100
ActionController::RoutingError (No route matches [GET] "/javascripts/application.js"):
私はapplication.rbに、これらの設定のバリエーションを試してみた:
require File.expand_path('../boot', __FILE__)
#require 'rails/all'
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "rails/test_unit/railtie"
if defined?(Bundler)
# If you precompile assets before deploying to production, use this line
Bundler.require *Rails.groups(:assets => %w(development test))
# If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env)
end
module Blog
class Application < Rails::Application
config.autoload_paths += %W(#{config.root}/lib)
config.encoding = "utf-8"
config.filter_parameters += [:password]
config.assets.enabled = true
config.assets.version = '1.0'
end
end
とフルproduction.rb(マイナスいくつかのコメント)
Blog::Application.configure do
config.cache_classes = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
end
私はrake assets:precompile
タスクを実行したしました。
明らかな手順がありませんか?
編集:いくつかの追加の詳細情報:
私の資産はapp/assets
フォルダにあります。 app/assets/images
、app/assets/javascripts
、app/assets/stylesheets
など
私のファイルは、public/assets
ディレクトリに名前とダイジェストで生成されています。
app/assets/javascripts/application.js
実際にpublic/assets/application-6ec417a53cb2bdb949966a153a61e7b1.js
のようなものにコンパイルされます。それらはpublic
ディレクトリにあります。
私はRSpecを使用していたので、test_unitと同様の設定をコメントアウトしました。私はスプロケットがそれ自身の鉄道を持っていたことは知らなかった。これをありがとうございました。 –
素晴らしいキャッチB) – dexter