0

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

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

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

是否有捷径可寻?不将其存储在数据库中?

4

3 回答 3

1

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

export MYAPPPASSWORD=1234

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

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

然后你可以打电话ENV['MYAPPPASSWORD']

于 2013-02-06T09:45:36.557 回答
0

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

在你的 /config/passwords.yml

password: your_password_text_here_without_quotes

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

password = YAML.load_file("#{Rails.root}/config/passwords.yml")["password"]
于 2013-02-06T09:42:28.003 回答
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

但是您不应该使用这种方法来以这种方式处理密码。对于简单的身份验证,请查看此基本身份验证的示例

于 2013-02-06T09:44:17.163 回答