2012-06-18 63 views
13

我正在使用rails,突然rails服務器停止工作。它的工作很好,我已經使用以下命令:[平臺的Windows 7]Rails :: Generator :: Base :: Class(NoMethodError)的未定義方法`write_inheritable_attribute'

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] 

回答

16

我有同樣的問題,但它是有gem rmagick的結果。

我跑了以下內容:

gem uninstall rmagick 
gem cleanup 

然後在我的籌碼重新運行bundle並再次爲我工作。

7

我已經解決了這個問題。使用下面的命令和問題不見了

gem install rails 

這將安裝更新的導軌和所有工作再次查找。

1

我有這個問題,它碰巧是我在rvm中使用錯誤的ruby和gemset。

3

如果您正在使用最新版本的Rails 3或導軌4然後用class_attributes代替write_inheritable_attribute,即代替

class_attribute :variable_name 
self.variable_name = value 

write_inheritable_attribute(:variable_name, value) 
+0

幫我更新軌2-風格插件軌道3和4.謝謝! – AJFaraday

7

運行bundle exec rails s爲我工作。

我的項目是使用Rails 3.x,但是當我運行rails -v時,我得到了2.3.17,這是我剛剛工作的一個項目使用的版本。以某種方式安裝此版本必須設置爲「默認」。

有人可以解釋這一點嗎?

+0

我有同樣的問題,並會喜歡解釋。 –

+0

首先使用gem install rails,rails s – indb

0

(@傑里米-f和@亞歷克斯別墅在正確的軌道,以識別問題本身上。)

這裏的問題是,在導軌2版的rails ...命令是一個發生器,相當於rails new ...在Rails 3+。所以rails s是Rails 2命令生成一個新的Rails 2的應用程序稱爲「S」(而我們大多數人,當我們寫rails s打算在Rails 3中使用,即啓動服務器!)如果你安裝了寶石

,它通常會在路徑中安裝它的二進制文件,所以你應該能夠通過執行gem install rails -v 2.3.15然後rails s來引起這個錯誤。

三種方式來解決這個問題:

  • gem install rails安裝Rails的新版本(您可能需要指定版本> = 3。0)
  • 運行與bundle exec rails s(只有當你在你的Gemfile中有Rails 3中)
  • 通常的方式運行的Rails 2項目的應用僅僅是script/server
相關問題