Skip to content

Commit

Permalink
Treat non {test,development} envs as production
Browse files Browse the repository at this point in the history
Closes [#361].

When the Rails environment is neither `test` nor `development` ([two
environments handled by EmberCLI out-of-the-box][ember-cli-env]), treat
it as `production`, unless an `EMBER_ENV` is specified.

[#361]: #361
[ember-cli-env]: http://ember-cli.com/user-guide/#Environments
  • Loading branch information
seanpdoyle committed Dec 20, 2015
1 parent b85bd02 commit ce613b0
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 14 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
master
------

* Translate Rails environments other than `test` or `development` to
`production`, unless an `EMBER_ENV` is specified. [#366]

[#366]: https://github.com/thoughtbot/ember-cli-rails/pull/366

0.6.1
-----

Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,15 @@ EmberCLI runners to clobber each others' work][#94].
[Unicorn]: https://rubygems.org/gems/unicorn
[#94]: https://github.com/thoughtbot/ember-cli-rails/issues/94#issuecomment-77627453

## `EMBER_ENV`

If set on the environment, the value of `EMBER_ENV` will be passed to the
`ember` process as the value of the `--environment` flag.

If `EMBER_ENV` is unspecified, the current Rails environment will be passed to
the `ember` process, with the exception of non-standard Rails environments,
which will be replaced with `production`.

## `RAILS_ENV`

While being managed by EmberCLI Rails, EmberCLI process will have
Expand Down
18 changes: 4 additions & 14 deletions lib/ember_cli/helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,16 @@ def which(cmd)
end

def current_environment
rails_config_for(:ember_cli_rails_mode){ default_environment }.to_s
ENV.fetch("EMBER_ENV") { default_environment }.inquiry
end

private

def default_environment
if Rails.env.test?
"test"
elsif Rails.env.production? || !rails_config_for(:consider_all_requests_local)
"production"
else
"development"
end
end

def rails_config_for(key)
if Rails.configuration.respond_to?(key)
Rails.configuration.public_send(key)
if Rails.env.match(/test|development/)
Rails.env
else
yield
"production"
end
end
end
Expand Down
58 changes: 58 additions & 0 deletions spec/lib/ember_cli/helpers_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
require "ember_cli/helpers"

describe EmberCli::Helpers do
describe ".current_environment" do
context "when EMBER_ENV is set" do
it "returns the value of EMBER_ENV" do
stub_env("EMBER_ENV" => "staging")

current_environment = EmberCli::Helpers.current_environment

expect(current_environment).to be_staging
end
end

context "when test" do
it "returns test" do
stub_rails_env("test")

current_environment = EmberCli::Helpers.current_environment

expect(current_environment).to be_test
end
end

context "when development" do
it "returns development" do
stub_rails_env("development")

current_environment = EmberCli::Helpers.current_environment

expect(current_environment).to be_development
end
end

context "when anything else" do
it "returns production" do
stub_rails_env("staging")

current_environment = EmberCli::Helpers.current_environment

expect(current_environment).to be_production
end
end
end

def stub_env(key_to_value)
allow(ENV).
to receive(:fetch).
with(key_to_value.keys.first).
and_return(key_to_value.values.first)
end

def stub_rails_env(env)
allow(Rails).
to receive(:env).
and_return(env.to_s.inquiry)
end
end

0 comments on commit ce613b0

Please sign in to comment.