我想在非Rails Ruby应用程序中使用特定于环境的变量。
我尝试了不同的文件名,例如.env.test.local
,.env.local
,.env.test
我尝试使用Dotenv.load
和require 'dotenv/load'
方法
这就是我包裹任务的方式
require 'rspec'
require 'rack/test'
require 'rspec/core/rake_task'
require 'dotenv/tasks'
task test: :dotenv do
RSpec::Core::RakeTask.new(:spec).run_task(verbose: true)
end
这是我的服务器
require 'dotenv/load'
require 'sinatra'
require 'sinatra/reloader' if development?
set :bind, '0.0.0.0'
get ENV['API_URL'] do
'Hello World!'
end
我的.env.test
文件
API_URL=/api/v1
{_ 1}}任务(使用:test
)运行的代码应该可以使用API_URL变量。
由于bundle exec rake test
为空而导致的错误。
ENV['API_URL']
答案 0 :(得分:0)
我想出了解决方法
require 'dotenv'
require 'sinatra'
require 'sinatra/reloader' if development?
Dotenv.load(".env.#{ENV['APP_ENV']}") # Remember to set your app environment
set :bind, '0.0.0.0'
get ENV['API_URL'] do
'Hello World!'
end
它仅适用于.env.<ENVIROMENT>
个文件。也许可以将其包装在一个函数中,但是我绝对希望像在Rails应用程序中那样由gem处理它,对我来说更有意义。