Estoy intentando instalar Devise en la versión de Rails. Aparece el error de la última versión de Devise.
He probado con otras versiones del dispositivo pero es actualizarlo a la última,
este es el error:
/usr/local/bundle/gems/devise-4.8.0/lib/devise.rb:321:in `ref': undefined method `reference' for ActiveSupport::Dependencies:Module (NoMethodError) web_1 | from /usr/local/bundle/gems/devise-4.8.0/lib/devise.rb:340:in `mailer=' web_1 | from /usr/local/bundle/gems/devise-4.8.0/lib/devise.rb:342:in `<module:Devise>' web_1 | from /usr/local/bundle/gems/devise-4.8.0/lib/devise.rb:11:in `<main>' web_1 | from /usr/local/bundle/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require' web_1 | from /usr/local/bundle/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi' web_1 | from /usr/local/bundle/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register' web_1 | from /usr/local/bundle/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi' web_1 | from /usr/local/bundle/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require' web_1 | from /usr/local/bundle/gems/zeitwerk-2.5.0.beta3/lib/zeitwerk/kernel.rb:35:in `require' web_1 | from /usr/local/lib/ruby/3.0.0/bundler/runtime.rb:66:in `block (2 levels) in require' web_1 | from /usr/local/lib/ruby/3.0.0/bundler/runtime.rb:61:in `each' web_1 | from /usr/local/lib/ruby/3.0.0/bundler/runtime.rb:61:in `block in require' web_1 | from /usr/local/lib/ruby/3.0.0/bundler/runtime.rb:50:in `each' web_1 | from /usr/local/lib/ruby/3.0.0/bundler/runtime.rb:50:in `require' web_1 | from /usr/local/lib/ruby/3.0.0/bundler.rb:174:in `require'si me pudieras ayudar te lo agradeceria
La versión de Devise que está utilizando llama a un método denominado reference . https://github.com/heartcombo/devise/blob/c82e4cf47b02002b2fd7ca31d441cf1043fc634c/lib/devise.rb#L320-L323
def self.ref(arg) ActiveSupport::Dependencies.reference(arg) Getter.new(arg) endEl método existía en Rails 6: https://github.com/rails/rails/blob/6-0-stable/activesupport/lib/active_support/dependencies.rb#L651-L653
Se eliminó en Rails 7: https://github.com/rails/rails/blob/main/activesupport/lib/active_support/dependencies.rb
Esta línea del registro de cambios de Rails 7.0.0.alpha1 explica.
Se han eliminado las clases internas privadas de ActiveSupport::Dependencies, como ActiveSupport::Dependencies::Reference, ActiveSupport::Dependencies::Blamable y otras.
El dispositivo ha lanzado una versión 4.8.1 que es compatible con Rails 7. Ejecute el dispositivo de actualización del bundle update devise para actualizar.
Devise ya fusionó la solución para este problema con Rails 7 en su rama principal.
Hasta que se publique una nueva versión, puede señalar la gema del dispositivo para usar la rama principal de GitHub en su Gemfile:
gem 'devise', git: 'https://github.com/heartcombo/devise', branch: 'main'Esta solución solucionó mi error:
gema "dispositivo", github: "strobilomyces/dispositivo", rama: "parche-1"