将控制器内容转换为单独的配置文件

时间:2013-02-06 09:29:19

标签: ruby-on-rails controllers

有人知道将控制器项目分成单独文件的好方法吗?我的控制器中有以下内容。

def admin?
    session[:password] == "password"
end

但我想将“密码”分成单独的文件,以便我可以从公共git repo中忽略它?

有一种简单的方法吗?不将其存储在数据库中?

3 个答案:

答案 0 :(得分:1)

您可以尝试使用ENV变量。首先将环境变量设置为值。

export MYAPPPASSWORD=1234

然后在初始化程序中使用它

# config/initializers/my_app_password.rb
ENV['MYAPPPASSWORD'] = `printf "%s" $MYAPPPASSWORD`

然后你可以拨打ENV['MYAPPPASSWORD']

答案 1 :(得分:0)

虽然在会话中存储密码并以这种方式使用它是一种不好的做法。但是,如果您有特定的理由这样做,那么您可以存储在配置目录下的yml文件中或任何位置。我在config目录下给出了示例:

在/config/passwords.yml

password: your_password_text_here_without_quotes

并在您的控制器/型号/任何地方加载文件并获取密码。

password = YAML.load_file("#{Rails.root}/config/passwords.yml")["password"]

答案 2 :(得分:0)

您可以使用全局常量来处理这些设置。 例如,在config目录中定义一个yml文件:

#config/password.yml
password: MyPassword

使用初始化程序在系统启动时加载设置。类似的东西:

#config/initializers/load_password.rb
conf_file = File.join(Rails.root, 'config', 'password.yml')
MY_CONFIG = OpenStruct.new YAML.load_file(conf_file)

使用以下方法在整个项目中访问:

MY_CONFIG.password

但是你不应该用这种方法来处理密码。 对于简单的身份验证,请查看此basic authentication

的示例