LoginSignup
0
0

More than 5 years have passed since last update.

Sinatraで環境変数(environment)のセット

Last updated at Posted at 2016-05-20

概要

sinatraで、webアクセス、Rake、Rspec実行時に使う環境変数(environment)を、
それぞれどうやってセットすればよいかのメモ。

環境

  • ruby 2.2.3p173
  • sinatra-1.4.7
  • Apache
  • Passenger

webアクセス

Apacheのconfで、RACK_ENVを設定する。

httpd.conf
SetEnv RACK_ENV development

アプリケーションのファイルで、下記のように環境変数をセットして使う。

(**snip**)

set :environment, ENV['RACK_ENV'].to_sym || :development

ActiveRecord::Base.configurations = YAML.load(ERB.new(File.read("db/database.yml")).result)
ActiveRecord::Base.establish_connection(settings.environment)

(**snip**)

Rake tasks

taskファイル

namespace :sample do
  task :environment do
    puts Sinatra::Application.environment
  end

  task :task1 => :environment do
  end
end

rakeコマンド実行時に、下記のように引数に環境変数を渡す。
他の方法ないのかな?

$ RAILS_ENV=production bundle exec rake sample:task1

RSpec

spec_helper.rbの先頭に、ENV['RACK_ENV'] = 'test'と定義する。
余りかっこよくないが、色々と調べてみたところ、こうやってる人が多いっぽい。
これで、webのテスト時も、rake taskのテスト時も、環境変数にtestがセットされた。

spec/spec_helper.rb
ENV['RACK_ENV'] = 'test'

(**snip**)

ActiveRecord::Base.configurations = YAML.load(ERB.new(File.read("db/database.yml")).result)
ActiveRecord::Base.establish_connection(:test)

(**snip**)

まだすっきりしない部分もありますが
以上

[参考]
https://shoyan.github.io/blog/2016/05/02/what-is-rack-env-and-unicorn-and-sinatra/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0