Proper place to override ApplicationController methods
I need to override a controller method when running a test suite against my application.
I am having to put my override in my app code, which I was hoping to prevent.
class ApplicationController
end
if ENV['LAYOUT'] == 'test'
class ApplicationController
layout: "test_layout"
end
end
ApplicationController does not exist for me to override in any of the spec helpers. The load order is:
- spec_helper
- config/application
- rails_helper
- application_controller
So I am setting the ENV variable in my spec_helper and redefine ApplicationController if that ENV is set. This seems messy and I would rather override ApplicationController from the /spec directory.
Is there a better place for me to override ApplicationController in the /specs
directory?
ruby-on-rails rspec3
add a comment |
I need to override a controller method when running a test suite against my application.
I am having to put my override in my app code, which I was hoping to prevent.
class ApplicationController
end
if ENV['LAYOUT'] == 'test'
class ApplicationController
layout: "test_layout"
end
end
ApplicationController does not exist for me to override in any of the spec helpers. The load order is:
- spec_helper
- config/application
- rails_helper
- application_controller
So I am setting the ENV variable in my spec_helper and redefine ApplicationController if that ENV is set. This seems messy and I would rather override ApplicationController from the /spec directory.
Is there a better place for me to override ApplicationController in the /specs
directory?
ruby-on-rails rspec3
What's the use case for this? Maybe there's a better way to achieve what you want but I don't really get why would you change the layout when testing (you already have mocks and stubs to override methods).
– arieljuod
Nov 15 '18 at 1:11
The main layout adds additional scripts that slows testing down. I can increase our test run by 50% if I can use a test layout.
– Travis
Nov 15 '18 at 1:46
Hmmm, personally, what I do is just wrap those scripts with anunless Rails.env.test? do ..... end
block, so they are not rendered on the view when the environment istest
. You won't have to mantain two layouts this way.
– arieljuod
Nov 15 '18 at 1:56
I have other methods in AppController that need to be overridden.
– Travis
Nov 15 '18 at 2:31
add a comment |
I need to override a controller method when running a test suite against my application.
I am having to put my override in my app code, which I was hoping to prevent.
class ApplicationController
end
if ENV['LAYOUT'] == 'test'
class ApplicationController
layout: "test_layout"
end
end
ApplicationController does not exist for me to override in any of the spec helpers. The load order is:
- spec_helper
- config/application
- rails_helper
- application_controller
So I am setting the ENV variable in my spec_helper and redefine ApplicationController if that ENV is set. This seems messy and I would rather override ApplicationController from the /spec directory.
Is there a better place for me to override ApplicationController in the /specs
directory?
ruby-on-rails rspec3
I need to override a controller method when running a test suite against my application.
I am having to put my override in my app code, which I was hoping to prevent.
class ApplicationController
end
if ENV['LAYOUT'] == 'test'
class ApplicationController
layout: "test_layout"
end
end
ApplicationController does not exist for me to override in any of the spec helpers. The load order is:
- spec_helper
- config/application
- rails_helper
- application_controller
So I am setting the ENV variable in my spec_helper and redefine ApplicationController if that ENV is set. This seems messy and I would rather override ApplicationController from the /spec directory.
Is there a better place for me to override ApplicationController in the /specs
directory?
ruby-on-rails rspec3
ruby-on-rails rspec3
asked Nov 15 '18 at 0:53
TravisTravis
1,50231524
1,50231524
What's the use case for this? Maybe there's a better way to achieve what you want but I don't really get why would you change the layout when testing (you already have mocks and stubs to override methods).
– arieljuod
Nov 15 '18 at 1:11
The main layout adds additional scripts that slows testing down. I can increase our test run by 50% if I can use a test layout.
– Travis
Nov 15 '18 at 1:46
Hmmm, personally, what I do is just wrap those scripts with anunless Rails.env.test? do ..... end
block, so they are not rendered on the view when the environment istest
. You won't have to mantain two layouts this way.
– arieljuod
Nov 15 '18 at 1:56
I have other methods in AppController that need to be overridden.
– Travis
Nov 15 '18 at 2:31
add a comment |
What's the use case for this? Maybe there's a better way to achieve what you want but I don't really get why would you change the layout when testing (you already have mocks and stubs to override methods).
– arieljuod
Nov 15 '18 at 1:11
The main layout adds additional scripts that slows testing down. I can increase our test run by 50% if I can use a test layout.
– Travis
Nov 15 '18 at 1:46
Hmmm, personally, what I do is just wrap those scripts with anunless Rails.env.test? do ..... end
block, so they are not rendered on the view when the environment istest
. You won't have to mantain two layouts this way.
– arieljuod
Nov 15 '18 at 1:56
I have other methods in AppController that need to be overridden.
– Travis
Nov 15 '18 at 2:31
What's the use case for this? Maybe there's a better way to achieve what you want but I don't really get why would you change the layout when testing (you already have mocks and stubs to override methods).
– arieljuod
Nov 15 '18 at 1:11
What's the use case for this? Maybe there's a better way to achieve what you want but I don't really get why would you change the layout when testing (you already have mocks and stubs to override methods).
– arieljuod
Nov 15 '18 at 1:11
The main layout adds additional scripts that slows testing down. I can increase our test run by 50% if I can use a test layout.
– Travis
Nov 15 '18 at 1:46
The main layout adds additional scripts that slows testing down. I can increase our test run by 50% if I can use a test layout.
– Travis
Nov 15 '18 at 1:46
Hmmm, personally, what I do is just wrap those scripts with an
unless Rails.env.test? do ..... end
block, so they are not rendered on the view when the environment is test
. You won't have to mantain two layouts this way.– arieljuod
Nov 15 '18 at 1:56
Hmmm, personally, what I do is just wrap those scripts with an
unless Rails.env.test? do ..... end
block, so they are not rendered on the view when the environment is test
. You won't have to mantain two layouts this way.– arieljuod
Nov 15 '18 at 1:56
I have other methods in AppController that need to be overridden.
– Travis
Nov 15 '18 at 2:31
I have other methods in AppController that need to be overridden.
– Travis
Nov 15 '18 at 2:31
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53310946%2fproper-place-to-override-applicationcontroller-methods%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53310946%2fproper-place-to-override-applicationcontroller-methods%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
What's the use case for this? Maybe there's a better way to achieve what you want but I don't really get why would you change the layout when testing (you already have mocks and stubs to override methods).
– arieljuod
Nov 15 '18 at 1:11
The main layout adds additional scripts that slows testing down. I can increase our test run by 50% if I can use a test layout.
– Travis
Nov 15 '18 at 1:46
Hmmm, personally, what I do is just wrap those scripts with an
unless Rails.env.test? do ..... end
block, so they are not rendered on the view when the environment istest
. You won't have to mantain two layouts this way.– arieljuod
Nov 15 '18 at 1:56
I have other methods in AppController that need to be overridden.
– Travis
Nov 15 '18 at 2:31