有人知道将控制器项目分离到单独文件中的好方法吗?我的控制器中有以下内容。
def admin?
session[:password] == "password"
end
但是我想将“密码”分成一个单独的文件,这样我就可以从公共 git repo 中忽略它?
是否有捷径可寻?不将其存储在数据库中?
有人知道将控制器项目分离到单独文件中的好方法吗?我的控制器中有以下内容。
def admin?
session[:password] == "password"
end
但是我想将“密码”分成一个单独的文件,这样我就可以从公共 git repo 中忽略它?
是否有捷径可寻?不将其存储在数据库中?
您可以尝试使用ENV
变量。首先将环境变量设置为一个值。
export MYAPPPASSWORD=1234
然后在初始化程序中使用它
# config/initializers/my_app_password.rb
ENV['MYAPPPASSWORD'] = `printf "%s" $MYAPPPASSWORD`
然后你可以打电话ENV['MYAPPPASSWORD']
尽管在会话中存储密码并以这种方式使用它是一种不好的做法。但是,如果您有特定的理由这样做,那么您可以将其存储在 config 目录下或任何地方的 yml 文件中。我在 config 目录下给出示例:
在你的 /config/passwords.yml
password: your_password_text_here_without_quotes
并在您的控制器/模型/任何地方加载文件并获取密码。
password = YAML.load_file("#{Rails.root}/config/passwords.yml")["password"]
您可以使用全局常量来处理这些设置。例如在 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
但是您不应该使用这种方法来以这种方式处理密码。对于简单的身份验证,请查看此基本身份验证的示例