gpt4 book ai didi

ruby-on-rails - 是否可以在我的代码中为 rails 开发环境设置 ENV 变量?

转载 作者:行者123 更新时间:2023-12-03 05:13:46 25 4
gpt4 key购买 nike

我知道我可以通过在 bash 中设置我的 ENV 变量

export admin_password = "secret"

但是有没有办法在我的 rails 源代码中的某个地方做到这一点?我的第一次尝试是这样的 environment/development.rb
ENV['admin_password'] = "secret"

但它没有用。有没有办法做到这一点?

最佳答案

[更新]

虽然“旧答案”下的解决方案适用于一般问题,但本节将在您的评论澄清后回答您的具体问题。

您应该能够完全按照您在问题中指定的方式设置环境变量。例如,我有一个使用 HTTP 基本身份验证的 Heroku 应用程序。

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :authenticate

def authenticate
authenticate_or_request_with_http_basic do |username, password|
username == ENV['HTTP_USER'] && password == ENV['HTTP_PASS']
end
end
end

# config/initializers/dev_environment.rb
unless Rails.env.production?
ENV['HTTP_USER'] = 'testuser'
ENV['HTTP_PASS'] = 'testpass'
end

所以在你的情况下你会使用
unless Rails.env.production?
ENV['admin_password'] = "secret"
end

不要忘记重新启动服务器,以便重新加载配置!

【旧答案】

对于应用程序范围的配置,您可能会考虑如下解决方案:

创建文件 config/application.yml带有您希望能够访问的选项散列:
admin_password: something_secret
allow_registration: true
facebook:
app_id: application_id_here
app_secret: application_secret_here
api_key: api_key_here

现在,创建文件 config/initializers/app_config.rb并包括以下内容:
require 'yaml'

yaml_data = YAML::load(ERB.new(IO.read(File.join(Rails.root, 'config', 'application.yml'))).result)
APP_CONFIG = HashWithIndifferentAccess.new(yaml_data)

现在,您可以在应用程序的任何位置访问 APP_CONFIG[:admin_password] ,以及您的所有其他数据。 (请注意,由于初始化程序包含 ERB.new ,您的 YAML 文件可以包含 ERB 标记。)

关于ruby-on-rails - 是否可以在我的代码中为 rails 开发环境设置 ENV 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com