在 Rails Engine 内运行 ActiveAdmin/Devise 生成器时,nil:NilClass 的未定义方法“configuration_hash”

问题描述 投票:0回答:1

所以我在我的应用程序中创建一个单独的引擎来实现管理功能。我创建了引擎,并将 Devise 和 ActiveAdmin 添加为

.gemspec
内部的依赖项。

  spec.add_dependency "rails", ">= 7.0.4.3"
  spec.add_dependency "devise"
  spec.add_dependency "activeadmin"

然后当我运行

engine_name/bin/rails g active_admin:install
时,我收到以下错误
undefined method 'configuration_hash' for nil:NilClass (NoMethodError)

ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: "primary").configuration_hash

我相信它正在发生,因为它无法找到数据库配置,即使它是在主应用程序中定义的,并且我可以从主应用程序的模型访问数据。

我尝试将

database.yml
从主应用程序的配置复制/粘贴到引擎配置文件夹,但它不起作用。我是不是错过了什么?

这是完整的堆栈跟踪:

/home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/devise-4.9.0/lib/generators/active_record/devise_generator.rb:100:in `ar_config': undefined method `configuration_hash' for nil:NilClass (NoMethodError)

            ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: "primary").configuration_hash
                                                                                               ^^^^^^^^^^^^^^^^^^^
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/devise-4.9.0/lib/generators/active_record/devise_generator.rb:94:in `postgresql?'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/devise-4.9.0/lib/generators/active_record/devise_generator.rb:82:in `inet?'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/devise-4.9.0/lib/generators/active_record/devise_generator.rb:78:in `ip_column'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/devise-4.9.0/lib/generators/active_record/devise_generator.rb:60:in `migration_data'
    from (erb):6:in `migration_template'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/erb.rb:429:in `eval'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/erb.rb:429:in `result'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/generators/migration.rb:66:in `block in migration_template'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/actions/create_file.rb:53:in `render'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/generators/actions/create_migration.rb:19:in `identical?'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/generators/actions/create_migration.rb:50:in `on_conflict_behavior'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/actions/empty_directory.rb:115:in `invoke_with_conflict_check'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/actions/create_file.rb:60:in `invoke!'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/generators/actions/create_migration.rb:25:in `invoke!'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/actions.rb:93:in `action'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/generators/migration.rb:36:in `create_migration'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/generators/migration.rb:65:in `migration_template'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/devise-4.9.0/lib/generators/active_record/devise_generator.rb:20:in `copy_devise_migration'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `invoke_all'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/group.rb:232:in `dispatch'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:116:in `invoke'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/activeadmin-3.0.0/lib/generators/active_admin/devise/devise_generator.rb:43:in `create_admin_user'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `block in invoke_all'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `each'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `map'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `invoke_all'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/group.rb:232:in `dispatch'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:116:in `invoke'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/group.rb:277:in `block in _invoke_for_class_method'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/shell.rb:68:in `with_padding'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/group.rb:266:in `_invoke_for_class_method'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/group.rb:134:in `_invoke_from_option_users'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `block in invoke_all'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `each'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `map'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `invoke_all'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/group.rb:232:in `dispatch'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/generators.rb:263:in `invoke'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/commands/generate/generate_command.rb:26:in `perform'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/command/base.rb:87:in `perform'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/command.rb:48:in `invoke'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/commands.rb:18:in `<top (required)>'
    from <internal:/home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
    from <internal:/home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
    from /home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.4.3/lib/rails/engine/commands.rb:9:in `<top (required)>'
    from <internal:/home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
    from <internal:/home/luka/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
    from travel_admin/bin/rails:23:in `<main>'

这是主应用程序的

database.yml
文件夹和引擎的
config/
文件夹中的
config/
文件。


default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: db_name_development

test:
  <<: *default
  database: db_name_test

production:
  <<: *default
  database: db_name_production
  username: db_name
  password: <%= ENV["DATABASE_PASSWORD"] %>

staging:
  <<: *default
  database: db_name_staging
  username: db_name
  password: <%= ENV["DATABASE_PASSWORD"] %>
ruby-on-rails activeadmin rails-engines
1个回答
0
投票

在运行该命令时在同一控制台中检查您的

RAILS_ENV

echo $RAILS_ENV

我在当地查了一下

ActiveRecord::Base.configurations.configs_for(env_name: "foo", name: "primary").configuration_hash

给出了这个确切的错误。也许你还有剩下的

export RAILS_ENV=something-not-standard

在你的一些 rc 文件中? (.bashrc、.zshrc?)。

© www.soinside.com 2019 - 2024. All rights reserved.