2012-07-14 63 views
4

我正在使用Rails 3.2應用程序,而且我試圖測試預編譯我的資產當我將我的應用程序投入生產時。該應用程序運行在發展很好,但是當我運行:運行'rake資產:預編譯'會產生錯誤:'`@ application.css'不允許作爲實例變量名'

bundle exec rake assets:precompile 

我得到以下錯誤:

rake aborted! 
`@application.css' is not allowed as an instance variable name 

我搜索我的代碼,並沒有提及application.css,除了當然還有那個名字的文件(偶爾也有評論)。

我也嘗試在生產模式下設置config.assets.compile = true,但也失敗了(應用服務器啓動正常,但在production.log中沒有錯誤,我只看到請求,而Rails呈現響應,但不完成)。

感謝您的任何幫助。

這裏有一個完整跟蹤,當我運行bundle exec rake assets:precompile

$ bundle exec rake assets:precompile --trace 
** Invoke assets:precompile (first_time) 
** Execute assets:precompile 
/Users/alb64/.rbenv/versions/1.9.2-p320/bin/ruby /Users/alb64/.rbenv/versions/1.9.2-p320/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace 
** Invoke assets:precompile:all (first_time) 
** Execute assets:precompile:all 
** Invoke assets:precompile:primary (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke environment (first_time) 
** Execute environment 
rake aborted! 
`@application.css' is not allowed as an instance variable name 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:244:in `instance_variable_set' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:244:in `block in init_with' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:244:in `each' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:244:in `init_with' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:229:in `revive' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:183:in `visit_Psych_Nodes_Mapping' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych/visitors/visitor.rb:7:in `accept' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:16:in `accept' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych/nodes/node.rb:25:in `to_ruby' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych.rb:107:in `load' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/psych.rb:205:in `load_file' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/actionpack-3.2.0/lib/sprockets/railtie.rb:42:in `block in <class:Railtie>' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/railties-3.2.0/lib/rails/initializable.rb:30:in `instance_exec' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/railties-3.2.0/lib/rails/initializable.rb:30:in `run' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/railties-3.2.0/lib/rails/initializable.rb:55:in `block in run_initializers' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/railties-3.2.0/lib/rails/initializable.rb:54:in `each' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/railties-3.2.0/lib/rails/initializable.rb:54:in `run_initializers' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/railties-3.2.0/lib/rails/application.rb:136:in `initialize!' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/railties-3.2.0/lib/rails/railtie/configurable.rb:30:in `method_missing' 
/Users/alb64/code/stc/reservations/config/environment.rb:6:in `<top (required)>' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:251:in `require' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:251:in `block in require' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:236:in `load_dependency' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:251:in `require' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/railties-3.2.0/lib/rails/application.rb:103:in `require_environment!' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/railties-3.2.0/lib/rails/application.rb:292:in `block (2 levels) in initialize_tasks' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/actionpack-3.2.0/lib/sprockets/assets.rake:89:in `block (2 levels) in <top (required)>' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `block in invoke_with_call_chain' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/actionpack-3.2.0/lib/sprockets/assets.rake:56:in `block (3 levels) in <top (required)>' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
/Users/alb64/.rbenv/versions/1.9.2-p320/bin/rake:23:in `load' 
/Users/alb64/.rbenv/versions/1.9.2-p320/bin/rake:23:in `<main>' 
Tasks: TOP => environment 
rake aborted! 
Command failed with status (1): [/Users/alb64/.rbenv/versions/1.9.2-p320/bi...] 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:53:in `block in create_shell_runner' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:45:in `call' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:45:in `sh' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb:39:in `sh' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:80:in `ruby' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb:39:in `ruby' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/actionpack-3.2.0/lib/sprockets/assets.rake:9:in `ruby_rake_task' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/actionpack-3.2.0/lib/sprockets/assets.rake:17:in `invoke_or_reboot_rake_task' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/actionpack-3.2.0/lib/sprockets/assets.rake:25:in `block (2 levels) in <top (required)>' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/Users/alb64/.rbenv/versions/1.9.2-p320/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
/Users/alb64/.rbenv/versions/1.9.2-p320/bin/rake:23:in `load' 
/Users/alb64/.rbenv/versions/1.9.2-p320/bin/rake:23:in `<main>' 
Tasks: TOP => assets:precompile 

編輯:

這裏的config/environment.rb中:

# Load the rails application 
require File.expand_path('../application', __FILE__) 
require 'rails_extensions' 

# Initialize the rails application 
Reservations::Application.initialize! 

而且這裏的config /環境/生產。 rb:

個預訂:: Application.configure在這裏做指定 #設置將優先於配置/ application.rb中

# The production environment is meant for finished, "live" apps. 
    # Code is not reloaded between requests 
    config.cache_classes = true 

    # Full error reports are disabled and caching is turned on 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 

    # Specifies the header that your server uses for sending files 
    config.action_dispatch.x_sendfile_header = "X-Sendfile" 

    # For nginx: 
    # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' 

    # If you have no front-end server that supports something like X-Sendfile, 
    # just comment this out and Rails will serve the files 

    # See everything in the log (default is :info) 
    # config.log_level = :debug 

    # Use a different logger for distributed setups 
    # config.logger = SyslogLogger.new 

    # Use a different cache store in production 
    # config.cache_store = :mem_cache_store 

    # Disable Rails's static asset server 
    # In production, Apache or nginx will already do this 
    config.serve_static_assets = false 

    # Enable serving of images, stylesheets, and javascripts from an asset server 
    # config.action_controller.asset_host = "http://assets.example.com" 

    # Disable delivery errors, bad email addresses will be ignored 
    # config.action_mailer.raise_delivery_errors = false 

    # Enable threaded mode 
    # config.threadsafe! 

    # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 
    # the I18n.default_locale when a translation can not be found) 
    config.i18n.fallbacks = true 

    # Send deprecation notices to registered listeners 
    config.active_support.deprecation = :notify 

    # Compress JavaScripts and CSS 
    config.assets.compress = true 

    # Choose the compressors to use 
    config.assets.js_compressor = :uglifier 
    config.assets.css_compressor = :yui 

    # Don't fallback to assets pipeline if a precompiled asset is missed 
    config.assets.compile = false 

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

    # Defaults to Rails.root.join("public/assets") 
    # config.assets.manifest = YOUR_PATH 

    # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) 
    # config.assets.precompile += %w(search.js) 
end 

編輯#2:所以我config.assets.digest更改爲false,現在rake assets:precompile運行正常,但是當我去啓動服務器(nginx的+乘客PHUSION)我得到了相同的跟蹤同樣的錯誤: `@application.css' is not allowed as an instance variable name

編輯#3:好吧,我已經縮小下來有點進一步。它肯定與public/assets/manifest.yml中的條目有關。我通過刪除清單中的第一個條目(application.css)來測試此錯誤,並且錯誤更改以反映新的第一條目application.js。還是一樣的錯誤,只是一個新的「實例變量」。

+0

'environment.rb'的內容是什麼? – 2012-07-14 17:39:49

+0

我可以看到application.js文件嗎? – 2012-08-06 02:30:12

+0

我想試着擺脫心理 – doesterr 2012-08-28 11:27:04

回答

1

這可能不是您的application.css文件的錯。問題是與迷幻,可能是因爲它是導致加載公共/資產/ manifest.yml問題,看到這個類似的錯誤在編織提交,可能的解決:

https://github.com/evilchelu/braid/commit/f08fac25570a1a56de8d6282f637d0604ef5e210

嘗試刪除鬥志,或者如果那是不可能的,在那裏尋找問題。請參閱您的堆棧跟蹤的這一部分:

psych.rb:205:in `load_file' 

你應該能夠找到一個補丁鬥志,如果你想保持它西港島線解決這個問題。

+0

謝謝你,你是正確的。目前,我已經用syck取代了psych。 – fuzzybassoon 2012-11-01 19:44:05