rails4.0 secret tokenをハードコードしない方法

rails4.0 secret tokenをハードコードしない方法

みなさんこんにちは、新人の意識高丸です。

前回に引き続き、rubyの勉強会ではrails4.0のチュートリアルをすすめました。
今回はセッションキーを暗号化するためのシークレットキーを、ハードコードせずに動的に生成する方法を学びました。

config/initializers/secret_token.rb

def secure_token
token_file = Rails.root.join(‘.secret’)
if File.exist?(token_file)
# Use the existing token.
File.read(token_file).chomp
else
# Generate a new token and store it in token_file.
token = SecureRandom.hex(64)
File.write(token_file, token)
token
end
end

SampleApp::Application.config.secret_key_base = secure_token

これを書いておくと、起動時に.secretがなければ生成してくれるようになります。
公開リポジトリにソースコードを置く場合などに便利ですね。

あとは、rspecのインストールにハマりました。
rails generate rspec:install
を実行すると、下記のようなエラーが出てしまいます。
undefined method `require_relative’ for main:Object (NoMethodError)

どうやらrubyやrailsのバージョンが原因のようです。
railsのチュートリアルではこのようなことが起きないよう、バージョンをすべて固定しているのですが、今回は勉強というのもあり、基本的に最新版を使うようにしていますがそれがあだとなりました。
やはりバージョンの依存関係は注意しなければならないと思いました。

TAG

  • このエントリーをはてなブックマークに追加
意識 高丸
エンジニア 意識 高丸 takamaru

Rubyについて日々勉強している新人エンジニアです。初心者向けRuby勉強会のレポートなどを投稿していきます。