Rails::Application::Configuration没有`assets`方法的定义。

4

你好,我正在将一个Rails 2应用程序升级到Rails 3。 当我想运行像rails crake -T等命令时,出现以下错误:

$ rails c
/usr/lib/ruby/gems/1.8/gems/railties-3.0.9/lib/rails/railtie/configuration.rb:77:in `method_missing': undefined method `assets' for #<Rails::Application::Configuration:0xb6569120> (NoMethodError)
    from /home/neoriddle/proyectos/interkids/config/application.rb:49
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:21:in `require'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:21
    from script/rails:6:in `require'
    from script/rails:6

以下是关于 rails c 命令的操作记录,接下来运行 rake -T 命令:

$ rake -T --trace
rake aborted!
undefined method `assets' for #<Rails::Application::Configuration:0xb658aa64>
/usr/lib/ruby/gems/1.8/gems/railties-3.0.9/lib/rails/railtie/configuration.rb:77:in `method_missing'
/home/neoriddle/proyectos/interkids/config/application.rb:49
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
/home/neoriddle/proyectos/interkids/Rakefile:5
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:501:in `raw_load_rakefile'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:82:in `load_rakefile'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:65:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/bin/rake:33
/usr/bin/rake:19:in `load'
/usr/bin/rake:19

您有解决这个问题的一些想法吗?

3个回答

11

直到Rails 3.1版本,才包含了资产流水线(Asset pipeline)功能。请将你的Rails gem(以及应用程序)升级至Rails 3.1及以上版本。


我将从3.0升级到3.1,但现在我需要完成从2.x到3.0的升级。Rails 3.0是必需的,所以我需要一段时间来使其运行。那么我应该如何修复(暂时)以使其正常工作? - Israel
2
@NeoRiddle:从config文件中的文件中删除引用config.assets的行。 - Ryan Bigg
是的,目前您可以删除所有关于config.assets的引用。请确保将答案标记为已接受,因为这是您错误的答案 :) - andrewpthorp

2
我也遇到了同样的问题,但是问题已经被解决了。
Ruby版本: 3.0.2 Rails版本: 6.1.3

config/application.rb

require "sprockets/railtie”

终端
$ mkdir -p app/assets/config && echo '{}' > app/assets/config/manifest.js

1
我的应用程序是 api_only 的,因此 Rails 在生成新资源时跳过了创建资产。
我从 development.rbproduction.rb 中删除了对 config.assets 的引用,然后它就可以工作了。
所以如果您的应用程序不需要它,可以删除对 assets 的引用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接