From e96d71552e31356b2e59e575ea18ba659ba41601 Mon Sep 17 00:00:00 2001 From: Dzmitry Plashchynski Date: Wed, 4 Mar 2015 14:25:17 +0200 Subject: [PATCH] Add option -e to set environment --- README.md | 1 + lib/crono/cli.rb | 6 +++++- lib/crono/config.rb | 2 ++ spec/cli_spec.rb | 5 +++++ spec/config_spec.rb | 2 ++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9ba90fe..fc9fa36 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,7 @@ Usage: crono [options] -L, --logfile PATH Path to writable logfile (Default: log/crono.log) -P, --pidfile PATH Path to pidfile (Default: tmp/pids/crono.pid) -d, --[no-]daemonize Daemonize process (Default: false) + -e, --environment ENV Application environment (Default: development) ``` ## License diff --git a/lib/crono/cli.rb b/lib/crono/cli.rb index 7492fd1..bebdf48 100644 --- a/lib/crono/cli.rb +++ b/lib/crono/cli.rb @@ -53,6 +53,7 @@ module Crono end def load_rails + ENV['RACK_ENV'] = ENV['RAILS_ENV'] = config.environment require 'rails' require File.expand_path("config/environment.rb") ::Rails.application.eager_load! @@ -91,7 +92,10 @@ module Crono opts.on("-d", "--[no-]daemonize", "Daemonize process (Default: #{config.daemonize})") do |daemonize| config.daemonize = daemonize end - + + opts.on '-e', '--environment ENV', "Application environment (Default: #{config.environment})" do |env| + config.environment = env + end end.parse!(argv) end end diff --git a/lib/crono/config.rb b/lib/crono/config.rb index 1fa3e3d..ecacb6f 100644 --- a/lib/crono/config.rb +++ b/lib/crono/config.rb @@ -8,12 +8,14 @@ module Crono attr_accessor :logfile attr_accessor :pidfile attr_accessor :daemonize + attr_accessor :environment def initialize self.cronotab = CRONOTAB self.logfile = LOGFILE self.pidfile = PIDFILE self.daemonize = false + self.environment = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "development" end end end diff --git a/spec/cli_spec.rb b/spec/cli_spec.rb index 9d21b6f..9a6ce0f 100644 --- a/spec/cli_spec.rb +++ b/spec/cli_spec.rb @@ -49,5 +49,10 @@ describe Crono::CLI do cli.send(:parse_options, ["--daemonize"]) expect(cli.config.daemonize).to be true end + + it "should set environment" do + cli.send(:parse_options, ["--environment", "production"]) + expect(cli.config.environment).to be_eql("production") + end end end diff --git a/spec/config_spec.rb b/spec/config_spec.rb index ca00f9e..df4e247 100644 --- a/spec/config_spec.rb +++ b/spec/config_spec.rb @@ -3,11 +3,13 @@ require "spec_helper" describe Crono::Config do describe "#initialize" do it "should initialize with default configuration options" do + ENV["RAILS_ENV"] = "test" @config = Crono::Config.new expect(@config.cronotab).to be Crono::Config::CRONOTAB expect(@config.logfile).to be Crono::Config::LOGFILE expect(@config.pidfile).to be Crono::Config::PIDFILE expect(@config.daemonize).to be false + expect(@config.environment).to be_eql ENV["RAILS_ENV"] end end end