2012-06-18 30 views
13

Raylar üzerinde çalışıyorum, aniden rails sunucu çalışmayı durdurur. Komut [platformu pencereler 7]tanımsız bir yöntem `write_inheritable_attribute 'için Rails :: Generator :: Temel: Sınıf (NoMethodError)

gem install -v=2.3.5 rails 

Ve rails s kullandığınızda, aşağıdaki hatayı veriyor aşağıdaki düzgün şekilde çalışıyorsa ve kullandığım:

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] 

cevap

16

Aynı problemi yaşadım, ancak gem rmagick'un sonucuydu. Benim yığınında bundle yeniden ran ve tekrar benim için çalıştı sonra

gem uninstall rmagick 
gem cleanup 

Ve:

aşağıdaki koştum.

7

Ben bu sorunu çözdük. Aşağıdaki komutu kullanın ve şu anki sorunu kullanın:

gem install rails 

Bu, güncellenmiş rayları ve tekrar çalışan bir şeyi kuracaktır.

1

Bu sorunu yaşadım ve rvm'de yanlış ruby ​​ve gemset kullanıyordum.

3

sonra yerine write_inheritable_attribute ait class_attributes kullanmak raylar 3 veya raylar 4 en son sürümünü kullanıyorsanız, yani

write_inheritable_attribute(:variable_name, value) 
+0

size Gemfile Rayları 3 sahipseniz bundle exec rails s()

  • Rails 2 projeyi çalıştırmak için her zamanki gibi uygulamayı çalıştır Bu raylar güncellemek için bana yardımcı oldu 2- raylar 3 ve 4 için stil eklentisi Teşekkürler! – AJFaraday

  • 7

    Running bundle exec rails s benim için çalıştı

    class_attribute :variable_name 
    self.variable_name = value 
    

    yerine.

    Projem Rails 3.x kullanıyordu, ancak rails -v'u çalıştırdığımda, daha önce üzerinde çalıştığım bir proje tarafından kullanılan sürüm olan 2.3.17 var. Bu sürümü yükleyen bir şekilde "varsayılan" olarak ayarlanmış olmalıdır.

    Birisi bunu açıklayabilir mi?

    +0

    Aynı sorunu yaşıyorum ve bir açıklama isterim. –

    +0

    öncelikle gem yükleme rayları, raylar s kullanın – indb

    0

    (@ Jeremy-f ve alex-villa @ sorunu kendisi belirlemeye doğru yolda bulunmaktadır.)

    yılında rails new ... eşdeğer Buradaki sorun Raylar 2. sürümünde rails ... komutu bir jeneratör olmasıdır, Radarlar 3+. Yani rails s "ler" adlı yeni Raylar 2 uygulamasını oluşturmak için Raylar 2 komut (biz yazarken çoğumuz oysa rails s Raylar 3 kullanımını, yani bir sunucu başlayın! Niyetinde)

    Bir mücevher yüklerseniz, o genellikle yolunda ikili dosyasını kuracaktır, bu yüzden OP'nin belirttiği gibi gem install rails -v 2.3.15 ve ardından rails s yaparak bu hatayı yapabilmeniz gerekir. bunu düzeltmek için

    üç yolu vardır:

    • gem install rails Raylar daha yeni bir sürümünü yüklemek için (bir versiyonunu> = 3 belirtmek gerekebilir.0)
    • basitçe script/server
    İlgili konular