2013年2月5日火曜日

Railsのsecret_tokenヘ(^o^)ノ

RailsアプリをまんまGithubへプッシュしたらconfing/initializers/secret_token.rbも!!!

このsecret_tokenはセッションデータを署名するために使う秘密鍵 Σ(゚д゚lll)

これを変更してWebサーバにデプロイすれば問題ないけど…

色々調べてるとみんないろんな方法で対処している

rake secretで生成された文字列をコピーする(絶対忘れるw

Rakeタスクを作成する(僕はこれにした

$ rails g task generate_secret_token

lib/tasks/generate_secret_token.rake
namespace :secret do
secret_token_file = Rails.root.join('config', 'initializers', 'secret_token.rb')
file secret_token_file do
require 'securerandom'
token = SecureRandom.hex(64)
require 'active_support/core_ext/string/strip'
application_name = Rails.application.class.name
content = <<-EOS.strip_heredoc
#{application_name}.config.secret_token = '#{token}'
EOS
secret_token_file.open('w') do |f|
f.write(content)
end
puts "Generated secret token and write it to #{secret_token_file.relative_path_from(Rails.root)}"
end
desc 'Generate secret token'
task generate: secret_token_file
end

参考というかそのままw → config/initializers/secret_token.rb を生成する Rake タスク

登録されているかチェックしてrakeコマンド
$ rake -vT
$ rake secret:generate

リポジトリからはsecret_token.rbは削除した

でも、よく考えると…

これって、デプロイする度に再起動しないといけない?…(´・ω・`)

Herokuだと環境変数に登録しておくのもアリだ

$ heroku config:add SECRET_TOKEN=xxxxx

config/initializers/secret_token.rb
#Hogeはアプリ名
Hoge::Application.config.secret_token = ENV['SECRET_TOKEN']

なんか良い方法ないか?w

( ̄(エ) ̄)彡☆

0 件のコメント:

コメントを投稿