将 session_store 与 :active_record 一起使用

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

我正在将一个应用程序从非常旧的 ruby on Rails 升级到 ruby 3.2.4 with Rails 7.1.3.2。我在使用 :active_record 进行会话存储时遇到问题,所以我回到基础知识并生成了博客应用程序,如 ruby 教程中所述。当我放入初始化程序以使用 :active_record 时,rails 立即给出错误。

我在 ubuntu 22.04 上运行。

这是我的 Gemfile,已删除注释

source "https://rubygems.org"

ruby "3.2.4"
gem "rails", "~> 7.1.3", ">= 7.1.3.2"
gem "sprockets-rails"
gem "sqlite3", "~> 1.4"
gem "puma", ">= 5.0"
gem "importmap-rails"
gem "turbo-rails"
gem "stimulus-rails"
gem "jbuilder"
gem "tzinfo-data", platforms: %i[ windows jruby ]
gem "bootsnap", require: false
gem 'activerecord-session_store', github: 'rails/activerecord-session_store'
group :development, :test do
  gem "debug", platforms: %i[ mri windows ]
end
group :development do
  gem "web-console"
end
group :test do
  gem "capybara"
  gem "selenium-webdriver"
end

这是初始化器

Rails.application.config.session_store :active_record

当我跑步时

 bundle exec rails generate active_record:session_migration

我得到以下堆栈跟踪

/home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/actionpack-7.1.3.2/lib/action_dispatch/middleware/stack.rb:42:in `build': undefined method `new' for ActiveRecord:Module (NoMethodError)

        klass.new(app, *args, &block)
             ^^^^
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/actionpack-7.1.3.2/lib/action_dispatch/middleware/stack.rb:171:in `block in build'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/actionpack-7.1.3.2/lib/action_dispatch/middleware/stack.rb:167:in `each'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/actionpack-7.1.3.2/lib/action_dispatch/middleware/stack.rb:167:in `inject'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/actionpack-7.1.3.2/lib/action_dispatch/middleware/stack.rb:167:in `build'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/engine.rb:522:in `block in app'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/engine.rb:518:in `synchronize'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/engine.rb:518:in `app'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/application/finisher.rb:58:in `block in <module:Finisher>'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/initializable.rb:32:in `instance_exec'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/initializable.rb:32:in `run'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/initializable.rb:61:in `block in run_initializers'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/3.2.0/tsort.rb:228:in `block in tsort_each'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/3.2.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/3.2.0/tsort.rb:431:in `each_strongly_connected_component_from'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/3.2.0/tsort.rb:349:in `block in each_strongly_connected_component'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/3.2.0/tsort.rb:347:in `each'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/3.2.0/tsort.rb:347:in `call'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/3.2.0/tsort.rb:347:in `each_strongly_connected_component'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/3.2.0/tsort.rb:226:in `tsort_each'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/3.2.0/tsort.rb:205:in `tsort_each'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/initializable.rb:60:in `run_initializers'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/application.rb:426:in `initialize!'
        from /mnt/hgfs/legalfirst/websites/dev/blog/config/environment.rb:5:in `<main>'
        from <internal:/home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
        from <internal:/home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/zeitwerk-2.6.13/lib/zeitwerk/kernel.rb:34:in `require'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/application.rb:402:in `require_environment!'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/command/actions.rb:20:in `boot_application!'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/commands/generate/generate_command.rb:21:in `perform'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/command/base.rb:178:in `invoke_command'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/command/base.rb:73:in `perform'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/command.rb:71:in `block in invoke'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/command.rb:149:in `with_argv'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/command.rb:69:in `invoke'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/railties-7.1.3.2/lib/rails/commands.rb:18:in `<main>'
        from <internal:/home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
        from <internal:/home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
        from /home/sysadmin/.rbenv/versions/3.2.4/lib/ruby/gems/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
        from bin/rails:4:in `<main>'

谁能告诉我如何配置 Rails 7.1.3 以使用 :active_record 进行会话存储。重构我的应用程序而不使用 :active_record 将需要大量工作。

ruby-on-rails ubuntu activerecord
1个回答
0
投票
当活动记录存储被提取到 gem 中时,

配置名称更改了

Rails.application.config.session_store :active_record_store, :key => "_my_app_session"

https://github.com/rails/activerecord-session_store#installation

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