2015-01-18 15 views
33

Prima di scrivere questa domanda ho guardato queste risposte, ma è stato in grado di trovare una soluzione .:metodo non definito raise_in_transactional_callbacks =' per ActiveRecord :: Base: Class (NoMethodError)

Error when execute rails generate scaffold User name:string email:string

rake aborted! undefined method `migration_error=' for ActiveRecord::Base:Class

Error launching Rails server: undefined method 'configure'


Quando provo ad avviare una nuova applicazione (per 012.337.070.963., capitolo 2), in fase di patibolo inizio, ho ottenuto un errore del tipo:

**undefined method `configure' for #<SampleApp2::Application:0x00000101a74610> (NoMethodError)** 

Ma grazie agli esempi di cui sopra, ho curato la development.rb di file:

DemoApp::Application.configure do 

(Sì, la mia applicazione si chiama demo_app così ho trasformato il suo nome).

Dopo di che, ho provato a correre patibolo di nuovo, ma ha ottenuto un nuovo errore:

**method_missing': undefined method raise_in_transactional_callbacks=' for ActiveRecord::Base:Class (NoMethodError)** 

In risposta a casi analoghi indica un migrazione metodo - che dovrebbe essere rimosso dallo sviluppo del file. rb. Allo stesso modo, ho cercato di trovare in questo file il metodo raise_in_transactional_callbacks, ma non è lì! Inoltre, direi che il codice completo che produce cmd è molto grande:

C:\Sites\demo_app>rails generate scaffold User name:string email:string 
invoke active_record 
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/dynamic_matchers.rb:22:in `method_missing': undefined method `raise_in_transactional_callbacks=' for ActiveRecord::Base:Class (NoMethodError) 
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:166:in `block (3 levels) in <class:Railtie>' 
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:165:in `each' 
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:165:in `block (2 levels) in <class:Railtie>' 
… 
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.2/lib/rails/commands.rb:48:in `<top (required)>' 
from bin/rails:4:in `require' 
from bin/rails:4:in `<main>' 

Dove il ... (ellissi) - codice simile appositamente tagliato. Questo è tutto. Sarei grato per qualsiasi aiuto!

risposta

106

tuo config/application.rb ha la seguente riga:

config.active_record.raise_in_transactional_callbacks = true

Questo non è un valore di configurazione valida nella versione di Rails. Dovrai eliminarlo o commentarlo per continuare.

Nota: questo errore e quello che lo ha preceduto sono indicativi di un Rails version change incompleto. Se sei nelle prime fasi di un tutorial, potresti seriamente considerare di riavviare la tua applicazione utilizzando la tua versione preferita di Rails sin dall'inizio. Questo ti aiuterà a evitare questo tipo di errore finché non avrai più familiarità con la tecnologia.

+12

Forse è utile dire che la linea funziona con la versione rails> = 4.2 – Chambeur

+2

Risposta corretta e commento che lo completa bene. Aveva creato un'applicazione 4.2, ma aveva bisogno di tornare alla versione 4.1 per l'accessibilità della gemma. +1 – Jerome

+0

Questo ha funzionato: sono confuso dalla 'Nota' ... Non sono sicuro di cos'altro si deve fare quando si esegue la migrazione a un'altra versione di binari .Puoi indicarmi la direzione giusta? –

18

Ho avuto lo stesso problema durante l'aggiornamento di un'app da Rails 5.0.1 a Rails 5.1.0.beta1.

Quando si avvia il server (rails s), ho ottenuto il seguente messaggio di errore:

/home/user01/.rvm/gems/[email protected]/gems/activerecord-5.1.0.beta1/lib/active_record/dynamic_matchers.rb:22:in `method_missing': undefined method `raise_in_transactional_callbacks=' for ActiveRecord::Base:Class (NoMethodError) 

Stesse mali, stesse cure.

Commentando la seguente riga, in config/application.rb, risolto il problema ...

config.active_record.raise_in_transactional_callbacks = true 

Dopo alcune indagini, ho scoperto che questa linea è di default in Rails 4.2.1, svanì in Rails 5.0.0, e ora genera un errore in Rails 5.1.0.beta1 ...

Problemi correlati