コントローラー項目を別のファイルに分離する良い方法を知っている人はいますか? 私は自分のコントローラーに次のものを持っています。
def admin?
session[:password] == "password"
end
しかし、「パスワード」を別のファイルに分けて、パブリック git リポジトリから無視できるようにしたいですか?
これを行う簡単な方法はありますか?これをデータベースに保存せずに?
コントローラー項目を別のファイルに分離する良い方法を知っている人はいますか? 私は自分のコントローラーに次のものを持っています。
def admin?
session[:password] == "password"
end
しかし、「パスワード」を別のファイルに分けて、パブリック git リポジトリから無視できるようにしたいですか?
これを行う簡単な方法はありますか?これをデータベースに保存せずに?
ENV
変数を使用してみることができます。最初に環境変数を値に設定します。
export MYAPPPASSWORD=1234
次に、これを初期化子で使用します
# config/initializers/my_app_password.rb
ENV['MYAPPPASSWORD'] = `printf "%s" $MYAPPPASSWORD`
その後、あなたはただ呼び出すことができますENV['MYAPPPASSWORD']
これらの設定を処理するには、グローバル定数を使用できます。たとえば、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
ただし、この方法でパスワードを処理するためにこのアプローチを使用しないでください。単純な認証については、この基本認証の例を見てください
パスワードをセッションに保存し、この方法で使用するのは悪い習慣ですが。それでも、このようにする特定の理由がある場合は、config ディレクトリまたは任意の場所にある yml ファイルに保存できます。config ディレクトリの下に例を示します。
/config/passwords.yml で
password: your_password_text_here_without_quotes
コントローラー/モデル/どこでもファイルをロードしてパスワードを取得します。
password = YAML.load_file("#{Rails.root}/config/passwords.yml")["password"]