【问题标题】:How does Sinatra know which environment to use?Sinatra 如何知道使用哪个环境?
【发布时间】:2013-01-16 07:38:15
【问题描述】:

我将 Sinatra 应用程序上传到服务器 (heroku)。但似乎该应用程序的行为就像它在本地主机上一样,不像我的另一个 Rails 应用程序在那里运行良好。

那么我如何检查我的 Sinatra 应用程序是否使用了正确的环境? Sinatra 如何知道要使用哪个环境?

【问题讨论】:

  • In Sinatra's documentationset :environment, :production
  • 我看到了。那么我该如何使用它们呢?
  • 把它放在你的app.rb 或者你的基本文件中。
  • 它已经在那里了。你试过了吗?
  • 我的意思是,它不存在,也不应该存在。如果我设置set :environment, :production,它将始终以生产模式执行,即使在本地主机上也是如此。应该有另一种方式。

标签: ruby heroku sinatra


【解决方案1】:

heroku 天生会负责设置环境。默认情况下,它是“生产”。如果您对不同的用例有不同的配置/行为,则必须先对其进行编码。

例如

if ENV=="production"
  # do something
elsif ENV=="staging"
  # do something else
end

我不确定您为什么要将环境明确设置为“生产”或其他内容。这应该由托管环境自行决定。

更新

更多信息Heroku documentation

进一步更新

 heroku run printenv

上面应该列出环境变量。

【讨论】:

  • 如何确定 heroku 使用的是哪一个?
  • 一种粗略的方法是使用 irb heroku run irb 然后 p ENV 你应该能够看到类似 "RACK_ENV"=>"production" 的东西
  • 更新答案,试试heroku run printenv
【解决方案2】:

我为我的所有 heroku 实例添加了一个环境变量:

heroku config:add APP_NAME=<myappname>

然后,对于 Sinatra,我在 config.ru 中有以下内容:

# detect environments and setup some passwords
case ENV['APP_NAME'] 
  when 'prod-damon'
    # whatever for production
  when 'dev-damon'
    # whatever for development on Heroku
  else
    # whatever for local
end

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2017-04-21
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多