我最近将我的应用程序升级到了 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,那么测试用例会顺利通过,但由于其他问题,我无法真正删除该行。有人能解决这个问题吗?
我最近将应用程序从 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)
我不确定为什么会抛出这样的错误,因为该常量已经定义了。我怀疑这是因为我在课程之前定义了模块。如果有人如何解决这个问题,请告诉我。我已经被困在这个问题太久了。