我正在使用rails,突然rails服务器停止工作。它工作正常,我使用了以下命令[platform windows 7]
gem install -v=2.3.5 rails
当我使用rails s
时,它会出现以下错误:
c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator/options.rb:32:in `default_options': undefined method `write_inheritable_attribute' for Rails::Generator::Base:Class (NoMethodError)
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator/base.rb:90:in `<class:Base>'
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator/base.rb:85:in `<module:Generator>'
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator/base.rb:48:in `<module:Rails>'
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator/base.rb:6:in `<top (required)>'
from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator.rb:34:in `<top (required)>'
from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/bin/rails:14:in `<top (required)>'
from c:/Ruby193/bin/rails:23:in `load'
from c:/Ruby193/bin/rails:23:in `<main>'
$ rails -v
Rails 2.3.5
$ ruby -v
ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
答案 0 :(得分:18)
我遇到了同样的问题,但这是gem rmagick
。
我运行了以下内容:
gem uninstall rmagick
gem cleanup
然后在我的堆栈中重新运行bundle
,它再次为我工作。
答案 1 :(得分:8)
我已经解决了这个问题。使用以下命令和问题
gem install rails
这将安装更新的rails并重新找到所有工作。
答案 2 :(得分:7)
正在运行bundle exec rails s
为我工作。
我的项目使用的是Rails 3.x但是当我运行rails -v
时,我得到了2.3.17
,这是我之前工作过的项目使用的版本。以某种方式安装此版本必须设置为“默认”。
有人可以解释一下吗?
答案 3 :(得分:3)
如果您使用的是最新版本的rails 3或rails 4,请使用class_attributes
代替write_inheritable_attribute
,即
class_attribute :variable_name
self.variable_name = value
而不是
write_inheritable_attribute(:variable_name, value)
答案 4 :(得分:1)
我遇到了这个问题,碰巧我在rvm中使用了错误的ruby和gemset。
答案 5 :(得分:1)
(@ jeremy-f和@ alex-villa正确定了问题本身。)
这里的问题是Rails版本2中的rails ...
命令是一个生成器,相当于Rails 3+中的rails new ...
。所以rails s
是一个Rails 2命令,用于生成一个名为&#34; s&#34;的新Rails 2应用程序。 (而我们大多数人在编写rails s
时都打算使用Rails 3,即启动服务器!)
如果你安装了一个gem,它通常会在路径中安装它的二进制文件,所以你应该能够像OP所说的那样gem install rails -v 2.3.15
然后rails s
来导致这个错误。
解决问题的三种方法:
gem install rails
安装较新版本的Rails(您可能需要指定版本&gt; = 3.0)bundle exec rails s
运行应用程序(仅当您的Gemfile中有Rails 3时)script/server