Hanami 2.0搭配Sequel执行Rake迁移时DATABASE_URL找不到的问题
解决Hanami 2.0 + Sequel迁移时KeyError找不到DATABASE_URL的问题
确保Rake任务加载Hanami环境
Rake默认不会自动接入Hanami的配置体系,需要在Rakefile开头添加环境加载代码,让Rake能读取到Hanami的配置和.env变量:require_relative "config/boot" Hanami.boot从Hanami Settings获取数据库连接
迁移任务里不要直接读取ENV["DATABASE_URL"],而是通过Hanami的settings对象获取——Hanami已经完成了.env变量的加载和类型校验,能保证配置的正确性:namespace :db do task :migrate do db = Sequel.connect(Hanami.app["settings"].database_url) # 执行迁移操作,例如: # Sequel::Migrator.run(db, "db/migrate") end end验证Settings配置正确性
检查config/settings.rb里是否正确定义了database_url配置项,替换成你的实际应用名称:module YourAppName class Settings < Hanami::Settings setting :database_url, constructor: Types::String end end测试环境加载状态
可以临时写一个测试Rake任务,确认是否能正常读取数据库URL:task :check_db_url do require_relative "config/boot" Hanami.boot puts "Database URL: #{Hanami.app["settings"].database_url}" end执行
rake check_db_url,如果能输出正确的URL,说明环境加载正常,再运行迁移任务就不会出现变量找不到的错误。
内容的提问来源于stack exchange,提问作者thiebo
相关产品推荐
相关产品推荐

