mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 07:08:01 +00:00
Add Mock Rails Environment With An Inquiry Instance as a Rails TIL
This commit is contained in:
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
||||||
|
|
||||||
_1335 TILs and counting..._
|
_1336 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -848,6 +848,7 @@ _1335 TILs and counting..._
|
|||||||
- [Mask An ActiveRecord Attribute](rails/mask-an-activerecord-attribute.md)
|
- [Mask An ActiveRecord Attribute](rails/mask-an-activerecord-attribute.md)
|
||||||
- [Merge A Scope Into An ActiveRecord Query](rails/merge-a-scope-into-an-activerecord-query.md)
|
- [Merge A Scope Into An ActiveRecord Query](rails/merge-a-scope-into-an-activerecord-query.md)
|
||||||
- [Migrating Up Down Up](rails/migrating-up-down-up.md)
|
- [Migrating Up Down Up](rails/migrating-up-down-up.md)
|
||||||
|
- [Mock Rails Environment With An Inquiry Instance](rails/mock-rails-environment-with-an-inquiry-instance.md)
|
||||||
- [Order Matters For `rescue_from` Blocks](rails/order-matters-for-rescue-from-blocks.md)
|
- [Order Matters For `rescue_from` Blocks](rails/order-matters-for-rescue-from-blocks.md)
|
||||||
- [Params Includes Submission Button Info](rails/params-includes-submission-button-info.md)
|
- [Params Includes Submission Button Info](rails/params-includes-submission-button-info.md)
|
||||||
- [Params Is A Hash With Indifferent Access](rails/params-is-a-hash-with-indifferent-access.md)
|
- [Params Is A Hash With Indifferent Access](rails/params-is-a-hash-with-indifferent-access.md)
|
||||||
|
|||||||
38
rails/mock-rails-environment-with-an-inquiry-instance.md
Normal file
38
rails/mock-rails-environment-with-an-inquiry-instance.md
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# Mock Rails Environment With An Inquiry Instance
|
||||||
|
|
||||||
|
As discussed in [Make A String Attribute Easy to Inquire
|
||||||
|
About](make-a-string-attribute-easy-to-inquire-about.md), the `Rails.env` is
|
||||||
|
assigned an instance of `ActiveSupport::StringInquirer`. This allows us to ask
|
||||||
|
whether the current Rails environment is `#production?`, `#development?`, etc.
|
||||||
|
|
||||||
|
With this in mind, we can have a test execute in a specific environment by
|
||||||
|
mocking how `Rails.env` responds. Though the actual env for a test is going to
|
||||||
|
be `test`, we can simulate a different environment with an RSpec `before` block
|
||||||
|
like the following:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
before do
|
||||||
|
allow(Rails).to receive(:env) { "staging".inquiry }
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Or similarly, to simulate the `production` environment:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
before do
|
||||||
|
allow(Rails).to receive(:env) { "production".inquiry }
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
The `#inquiry` being monkey-patched onto the `String` class gives you the
|
||||||
|
willies, you could do the following instead:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
before do
|
||||||
|
allow(Rails).to receive(:env) do
|
||||||
|
ActiveSupport::StringInquirer.new("production")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
[source](https://stackoverflow.com/a/25134591/535590)
|
||||||
Reference in New Issue
Block a user