2011-10-03 12 views
7

私は最近、アプリケーションを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/imagesapp/assets/javascriptsapp/assets/stylesheetsなど

私のファイルは、public/assetsディレクトリに名前とダイジェストで生成されています。

app/assets/javascripts/application.js実際にpublic/assets/application-6ec417a53cb2bdb949966a153a61e7b1.jsのようなものにコンパイルされます。それらはpublicディレクトリにあります。

答えて

12

スプロケットがロードされていません。レールの以前のバージョンでアクティブなレコードを削除するための努力において

(ア・ラ・この質問Remove ActiveRecord in Rails 3 (beta)require 'rails/all'がここに欠けていた何

require "action_controller/railtie" 
require "action_mailer/railtie" 
require "active_resource/railtie" 
require "rails/test_unit/railtie" 

に置き換えられましたが、私が見ていたsprockets/railtie

+0

私はRSpecを使用していたので、test_unitと同様の設定をコメントアウトしました。私はスプロケットがそれ自身の鉄道を持っていたことは知らなかった。これをありがとうございました。 –

+0

素晴らしいキャッチB) – dexter

3

Upgrading to Rails 3.1 Railscast

はあなたの資産がapp/assetsフォルダ内にあることを確認してくださいを参照してください。 app/assets/imagesapp/assets/javascriptsapp/assets/stylesheetsなど

有効になっている場合は、名前やダイジェストを使用してapp/public/assetsディレクトリに生成されたファイルが表示されるはずですrake assets:precompile

を実行します。あなたは、Webページのソースを見ればお分かりのはずです

# Generate digests for assets URLs 
config.assets.digest = true 

app/assets/javascripts/application.jsは、資産がダイジェストで上記と同様の命名されている場合は、Production.rbは、以下の設定が必要です/assets/application-6ec417a53cb2bdb949966a153a61e7b1.js

にコンパイルします次のようなもの:

<script src="/assets/application-6ec417a53cb2bdb949966a153a61e7b1.js" type="text/javascript"></script> 

に移動してファイルを手動で読み込みます。

ファイルが読み込まれていない場合は、アクセス権とそれ以上のログを確認してください。

+0

おかげでした私の変更を加えるときにレールがキャストされます。私はあなたの提案に対処するために私の答えを更新しました。 – tpower

+0

'application.rb'と' production.rb'を投稿できますか? – Joey

+0

質問に 'application.rb'と' production.rb'を完全に追加しました。完全なレポ:https://github.com/trevorpower/trevorpower-com – tpower

関連する問題