我在Sinatra上创建了应用程序,它代表了一个简单的API.我想在生产和开发上进行部署.我想在部署期间选择,无论是开发还是生产,并且某些方法的逻辑应该根据部署类型进行更改.有什么想法,怎么做以及解决这个问题的一些例子.
示例:我有代码
get '/api/test' do
return "It is dev"
end
Run Code Online (Sandbox Code Playgroud)
但是在部署到生产之后我想在运行/ api/test之后看到
It is PROD
Run Code Online (Sandbox Code Playgroud)
怎么做?
根据Sinatra文档:
可以通过RACK_ENV环境变量设置环境.默认值为"development".在"开发"环境中,所有模板都在请求之间重新加载,特殊的not_found和错误处理程序在浏览器中显示堆栈跟踪.在"生产"和"测试"环境中,默认情况下会缓存模板.
要运行不同的环境,请设置RACK_ENV环境变量:
RACK_ENV =生产ruby my_app.rb
您还可以使用development?和production?方法来更改逻辑:
get '/api/test' do
if settings.development?
return "It is dev"
else if settings.production?
return "It is PROD"
end
end
Run Code Online (Sandbox Code Playgroud)
如果settings.development?不起作用,你可以试试Sinatra::Application.environment == :development