2012-06-18 22 views
13

Estoy trabajando en rieles, de repente el servidor de rieles deja de funcionar. Está funcionando bien y he utilizado siguiente comando [7] ventanas plataformamétodo indefinido `write_inheritable_attribute 'para Rails :: Generator :: Base: Class (NoMethodError)

gem install -v=2.3.5 rails 

Y cuando uso rails s, se da el siguiente error:

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] 

Respuesta

16

Tuve el mismo problema, pero fue el resultado de tener el gem rmagick.

que corrieron los siguientes:

gem uninstall rmagick 
gem cleanup 

y luego re-corrió bundle en mi pila y funcionó para mí otra vez.

7

He resuelto este problema. Utilice el siguiente comando y el problema ha desaparecido

gem install rails 

Esto instalará los rieles actualizados y encontrará todo lo que funcione de nuevo.

1

Tuve este problema, y ​​sucede que estaba usando el ruby ​​y el gemset incorrectos en rvm.

3

si está utilizando la versión más reciente de los carriles 3 o 4 carriles a continuación, utilizar class_attributes en lugar de write_inheritable_attribute, es decir

class_attribute :variable_name 
self.variable_name = value 

en lugar de

write_inheritable_attribute(:variable_name, value) 
+0

Esto me ayudó a poner al día a los carriles 2- plugin de estilo para rieles 3 y 4. ¡Gracias! – AJFaraday

7

Correr bundle exec rails s trabajó para mí.

Mi proyecto estaba usando Rails 3.x pero cuando ejecuté rails -v obtuve 2.3.17 que es la versión utilizada por un proyecto en el que trabajé justo antes. De alguna manera, la instalación de esta versión debe haberse configurado como "predeterminada".

¿Alguien podría explicar esto?

+0

Estoy teniendo el mismo problema y me encantaría una explicación. –

+0

primero use los rieles de instalación gema the, rails s – indb

0

(@ Jeremy-fy @ Alex-villa están en el camino correcto para identificar el problema en sí.)

El problema aquí es que el comando rails ... en Rails versión 2 es un generador, lo que equivale a rails new ... en Rails 3+. Así rails s es un comando de raíles 2 para generar un nuevo Carriles 2 aplicación llamada "s" (mientras que la mayoría de nosotros cuando escribimos rails s la intención de los rieles 3 uso, es decir, iniciar un servidor!)

Si instala una joya, se generalmente instalará su binario en la ruta, por lo que debería poder causar este error haciendo gem install rails -v 2.3.15 y luego rails s como dice el OP.

Tres maneras de solucionarlo:

  • gem install rails para instalar una nueva versión de Rails (puede que tenga que especificar una versión> = 3.0)
  • ejecutar la aplicación con bundle exec rails s (sólo si tiene Rails 3 en su Gemfile)
  • La forma habitual de ejecutar un proyecto Rails 2 es simplemente script/server
Cuestiones relacionadas