小编Dev*_*v V的帖子

升级到 Rails 7 后出现 ActionDispatch::Request::Session::DisabledSessionError

我最近将我的应用程序升级到了 Rails 7,现在我的一些测试失败并出现以下错误。

ActionDispatch::Request::Session::DisabledSessionError: Your application has sessions disabled. To write to the session you must first configure a session store
Run Code Online (Sandbox Code Playgroud)

我怀疑这与devise. 下面是导致问题的代码。

def login_user(user)
  post "/api/v2/login", :params => { :username => user.username, :password => user.password }
  assert_response :success, response.body
  json = JSON.parse(response.body)
  {:authentication_token => json["user"]["authentication_token"]}
end
Run Code Online (Sandbox Code Playgroud)

config.api_only = true如果我从文件中删除该行application.rb,那么测试用例会顺利通过,但由于其他问题,我无法真正删除该行。有人能解决这个问题吗?

ruby rubygems ruby-on-rails devise

4
推荐指数
1
解决办法
3882
查看次数

Zeitwerk::NameError 由于 Rails 7 中的模块名称

我最近将应用程序从 Rails 6 升级到 7,由于 zeitwerk 命名约定,我面临一个问题。我有一个要自动加载的以下文件:

app/models/dw/hospital.rb

module DW
  class Hospital < DataWarehouse
    def self.columns
      super.reject{|column| column.name == 'tableau_user' }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我尝试通过在文件中添加以下行来自动加载此文件application.rb

config.autoload_once_paths << 'app/models/dw'
Run Code Online (Sandbox Code Playgroud)

但是当我启动服务器时,出现以下错误:

expected file app/models/dw/hospital.rb to define constant Hospital, but didn't (Zeitwerk::NameError)
Run Code Online (Sandbox Code Playgroud)

我不确定为什么会抛出这样的错误,因为该常量已经定义了。我怀疑这是因为我在课程之前定义了模块。如果有人如何解决这个问题,请告诉我。我已经被困在这个问题太久了。

ruby ruby-on-rails zeitwerk ruby-on-rails-7

1
推荐指数
1
解决办法
2628
查看次数