有人知道将控制器项目分成单独文件的好方法吗?我的控制器中有以下内容。
def admin?
session[:password] == "password"
end
但我想将“密码”分成单独的文件,以便我可以从公共git repo中忽略它?
有一种简单的方法吗?不将其存储在数据库中?
答案 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
的示例