Only include React::Rails::TestHelper in test environment - #996

Merged
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers
Jul 27, 2019
Merged

Only include React::Rails::TestHelper in test environment#996
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers

Conversation

@Aesthetikx

Copy link
Copy Markdown
Contributor

Based on this discussion in the rails repository I determined that the latest version of react-rails (2.5.0, not present in 2.4.7) inadvertently causes action_controller/test_case to be required, which breaks ActionController::Live streaming in development and presumably production environments.

/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:23:in`<module:Live>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:18:in `<module:ActionController>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:13:in `<top (required)>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `blockinrequire' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:614:in `<module:Behavior>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:610:in `<class:IntegrationTest>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:600:in`<module:ActionDispatch>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:12:in `<top(required)>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`block in require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/react-rails-2.5.0/lib/react/rails/railtie.rb:61:in `block(2levels)in <class:Railtie>'

This change only includes React::Rails::TestHelper in the test environment.

@pcarnpcarn left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this fixed my problem

@BookOfGreg

Copy link
Copy Markdown
Contributor

Thank you for confirming this does not occur in the 2.4 branch, that helps me know there is no backport needed.
I'll look into why Chrome is breaking the test suite again, Google probably changed how the webdrivers work (again!) and then get this through as a point release as soon as I'm able to test it myself as the code and attached discussion seems sensible.
I remember copying that include code from another gem so yeah this is probably affecting a fair amount of the community.

@BookOfGregBookOfGreg self-assigned this Jun 20, 2019
@pcarn

Copy link
Copy Markdown

@BookOfGreg Can this be merged soon so we can use it? Thanks!

@BookOfGreg

Copy link
Copy Markdown
Contributor

I need the ChromeDriver fix first. #1004
The tests won't run without it.
I'd love some help!

@BookOfGregBookOfGreg mentioned this pull request Jul 27, 2019
@BookOfGreg

BookOfGreg commented Jul 27, 2019

Copy link
Copy Markdown
Contributor

@Aesthetikx@pcarn I re-ran the tests with master merged (#1005 , Finished work on #1004 ) and tests passed there.

Released in 2.6.0

@BookOfGreg
BookOfGreg merged commit a03a404 into reactjs:masterJul 27, 2019
@kwstannard

Copy link
Copy Markdown

Noting here for posterity and search crawlers that this was a breaking change for us, causing a NoMethodError #flash on ActionDispatch::Request.

https://github.com/rails/rails/blob/v5.2.6/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L170

We were able to just remove csrf protection on our API controllers to get around the failure as I am under the impression that csrf is not needed for APIs.

I consider this to be a problem with Rails though. It is not reasonable to expect this change to have caused that error.

kwstannard referenced this pull request in rails/rails Nov 30, 2021
this commit removes some direct access to `env`.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Aesthetikx@BookOfGreg@pcarn@kwstannard@Snailslug
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Only include React::Rails::TestHelper in test environment - #996

Merged
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers
Jul 27, 2019
Merged

Only include React::Rails::TestHelper in test environment#996
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers

Conversation

@Aesthetikx

Copy link
Copy Markdown
Contributor

Based on this discussion in the rails repository I determined that the latest version of react-rails (2.5.0, not present in 2.4.7) inadvertently causes action_controller/test_case to be required, which breaks ActionController::Live streaming in development and presumably production environments.

/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:23:in`<module:Live>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:18:in `<module:ActionController>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:13:in `<top (required)>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `blockinrequire' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:614:in `<module:Behavior>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:610:in `<class:IntegrationTest>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:600:in`<module:ActionDispatch>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:12:in `<top(required)>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`block in require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/react-rails-2.5.0/lib/react/rails/railtie.rb:61:in `block(2levels)in <class:Railtie>'

This change only includes React::Rails::TestHelper in the test environment.

@pcarnpcarn left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this fixed my problem

@BookOfGreg

Copy link
Copy Markdown
Contributor

Thank you for confirming this does not occur in the 2.4 branch, that helps me know there is no backport needed.
I'll look into why Chrome is breaking the test suite again, Google probably changed how the webdrivers work (again!) and then get this through as a point release as soon as I'm able to test it myself as the code and attached discussion seems sensible.
I remember copying that include code from another gem so yeah this is probably affecting a fair amount of the community.

@BookOfGregBookOfGreg self-assigned this Jun 20, 2019
@pcarn

Copy link
Copy Markdown

@BookOfGreg Can this be merged soon so we can use it? Thanks!

@BookOfGreg

Copy link
Copy Markdown
Contributor

I need the ChromeDriver fix first. #1004
The tests won't run without it.
I'd love some help!

@BookOfGregBookOfGreg mentioned this pull request Jul 27, 2019
@BookOfGreg

BookOfGreg commented Jul 27, 2019

Copy link
Copy Markdown
Contributor

@Aesthetikx@pcarn I re-ran the tests with master merged (#1005 , Finished work on #1004 ) and tests passed there.

Released in 2.6.0

@BookOfGreg
BookOfGreg merged commit a03a404 into reactjs:masterJul 27, 2019
@kwstannard

Copy link
Copy Markdown

Noting here for posterity and search crawlers that this was a breaking change for us, causing a NoMethodError #flash on ActionDispatch::Request.

https://github.com/rails/rails/blob/v5.2.6/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L170

We were able to just remove csrf protection on our API controllers to get around the failure as I am under the impression that csrf is not needed for APIs.

I consider this to be a problem with Rails though. It is not reasonable to expect this change to have caused that error.

kwstannard referenced this pull request in rails/rails Nov 30, 2021
this commit removes some direct access to `env`.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Aesthetikx@BookOfGreg@pcarn@kwstannard@Snailslug
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Only include React::Rails::TestHelper in test environment - #996

Merged
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers
Jul 27, 2019
Merged

Only include React::Rails::TestHelper in test environment#996
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers

Conversation

@Aesthetikx

Copy link
Copy Markdown
Contributor

Based on this discussion in the rails repository I determined that the latest version of react-rails (2.5.0, not present in 2.4.7) inadvertently causes action_controller/test_case to be required, which breaks ActionController::Live streaming in development and presumably production environments.

/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:23:in`<module:Live>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:18:in `<module:ActionController>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:13:in `<top (required)>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `blockinrequire' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:614:in `<module:Behavior>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:610:in `<class:IntegrationTest>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:600:in`<module:ActionDispatch>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:12:in `<top(required)>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`block in require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/react-rails-2.5.0/lib/react/rails/railtie.rb:61:in `block(2levels)in <class:Railtie>'

This change only includes React::Rails::TestHelper in the test environment.

@pcarnpcarn left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this fixed my problem

@BookOfGreg

Copy link
Copy Markdown
Contributor

Thank you for confirming this does not occur in the 2.4 branch, that helps me know there is no backport needed.
I'll look into why Chrome is breaking the test suite again, Google probably changed how the webdrivers work (again!) and then get this through as a point release as soon as I'm able to test it myself as the code and attached discussion seems sensible.
I remember copying that include code from another gem so yeah this is probably affecting a fair amount of the community.

@BookOfGregBookOfGreg self-assigned this Jun 20, 2019
@pcarn

Copy link
Copy Markdown

@BookOfGreg Can this be merged soon so we can use it? Thanks!

@BookOfGreg

Copy link
Copy Markdown
Contributor

I need the ChromeDriver fix first. #1004
The tests won't run without it.
I'd love some help!

@BookOfGregBookOfGreg mentioned this pull request Jul 27, 2019
@BookOfGreg

BookOfGreg commented Jul 27, 2019

Copy link
Copy Markdown
Contributor

@Aesthetikx@pcarn I re-ran the tests with master merged (#1005 , Finished work on #1004 ) and tests passed there.

Released in 2.6.0

@BookOfGreg
BookOfGreg merged commit a03a404 into reactjs:masterJul 27, 2019
@kwstannard

Copy link
Copy Markdown

Noting here for posterity and search crawlers that this was a breaking change for us, causing a NoMethodError #flash on ActionDispatch::Request.

https://github.com/rails/rails/blob/v5.2.6/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L170

We were able to just remove csrf protection on our API controllers to get around the failure as I am under the impression that csrf is not needed for APIs.

I consider this to be a problem with Rails though. It is not reasonable to expect this change to have caused that error.

kwstannard referenced this pull request in rails/rails Nov 30, 2021
this commit removes some direct access to `env`.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Aesthetikx@BookOfGreg@pcarn@kwstannard@Snailslug
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Only include React::Rails::TestHelper in test environment - #996

Merged
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers
Jul 27, 2019
Merged

Only include React::Rails::TestHelper in test environment#996
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers

Conversation

@Aesthetikx

Copy link
Copy Markdown
Contributor

Based on this discussion in the rails repository I determined that the latest version of react-rails (2.5.0, not present in 2.4.7) inadvertently causes action_controller/test_case to be required, which breaks ActionController::Live streaming in development and presumably production environments.

/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:23:in`<module:Live>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:18:in `<module:ActionController>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:13:in `<top (required)>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `blockinrequire' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:614:in `<module:Behavior>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:610:in `<class:IntegrationTest>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:600:in`<module:ActionDispatch>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:12:in `<top(required)>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`block in require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/react-rails-2.5.0/lib/react/rails/railtie.rb:61:in `block(2levels)in <class:Railtie>'

This change only includes React::Rails::TestHelper in the test environment.

@pcarnpcarn left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this fixed my problem

@BookOfGreg

Copy link
Copy Markdown
Contributor

Thank you for confirming this does not occur in the 2.4 branch, that helps me know there is no backport needed.
I'll look into why Chrome is breaking the test suite again, Google probably changed how the webdrivers work (again!) and then get this through as a point release as soon as I'm able to test it myself as the code and attached discussion seems sensible.
I remember copying that include code from another gem so yeah this is probably affecting a fair amount of the community.

@BookOfGregBookOfGreg self-assigned this Jun 20, 2019
@pcarn

Copy link
Copy Markdown

@BookOfGreg Can this be merged soon so we can use it? Thanks!

@BookOfGreg

Copy link
Copy Markdown
Contributor

I need the ChromeDriver fix first. #1004
The tests won't run without it.
I'd love some help!

@BookOfGregBookOfGreg mentioned this pull request Jul 27, 2019
@BookOfGreg

BookOfGreg commented Jul 27, 2019

Copy link
Copy Markdown
Contributor

@Aesthetikx@pcarn I re-ran the tests with master merged (#1005 , Finished work on #1004 ) and tests passed there.

Released in 2.6.0

@BookOfGreg
BookOfGreg merged commit a03a404 into reactjs:masterJul 27, 2019
@kwstannard

Copy link
Copy Markdown

Noting here for posterity and search crawlers that this was a breaking change for us, causing a NoMethodError #flash on ActionDispatch::Request.

https://github.com/rails/rails/blob/v5.2.6/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L170

We were able to just remove csrf protection on our API controllers to get around the failure as I am under the impression that csrf is not needed for APIs.

I consider this to be a problem with Rails though. It is not reasonable to expect this change to have caused that error.

kwstannard referenced this pull request in rails/rails Nov 30, 2021
this commit removes some direct access to `env`.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Aesthetikx@BookOfGreg@pcarn@kwstannard@Snailslug
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Only include React::Rails::TestHelper in test environment - #996

Merged
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers
Jul 27, 2019
Merged

Only include React::Rails::TestHelper in test environment#996
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers

Conversation

@Aesthetikx

Copy link
Copy Markdown
Contributor

Based on this discussion in the rails repository I determined that the latest version of react-rails (2.5.0, not present in 2.4.7) inadvertently causes action_controller/test_case to be required, which breaks ActionController::Live streaming in development and presumably production environments.

/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:23:in`<module:Live>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:18:in `<module:ActionController>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:13:in `<top (required)>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `blockinrequire' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:614:in `<module:Behavior>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:610:in `<class:IntegrationTest>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:600:in`<module:ActionDispatch>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:12:in `<top(required)>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`block in require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/react-rails-2.5.0/lib/react/rails/railtie.rb:61:in `block(2levels)in <class:Railtie>'

This change only includes React::Rails::TestHelper in the test environment.

@pcarnpcarn left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this fixed my problem

@BookOfGreg

Copy link
Copy Markdown
Contributor

Thank you for confirming this does not occur in the 2.4 branch, that helps me know there is no backport needed.
I'll look into why Chrome is breaking the test suite again, Google probably changed how the webdrivers work (again!) and then get this through as a point release as soon as I'm able to test it myself as the code and attached discussion seems sensible.
I remember copying that include code from another gem so yeah this is probably affecting a fair amount of the community.

@BookOfGregBookOfGreg self-assigned this Jun 20, 2019
@pcarn

Copy link
Copy Markdown

@BookOfGreg Can this be merged soon so we can use it? Thanks!

@BookOfGreg

Copy link
Copy Markdown
Contributor

I need the ChromeDriver fix first. #1004
The tests won't run without it.
I'd love some help!

@BookOfGregBookOfGreg mentioned this pull request Jul 27, 2019
@BookOfGreg

BookOfGreg commented Jul 27, 2019

Copy link
Copy Markdown
Contributor

@Aesthetikx@pcarn I re-ran the tests with master merged (#1005 , Finished work on #1004 ) and tests passed there.

Released in 2.6.0

@BookOfGreg
BookOfGreg merged commit a03a404 into reactjs:masterJul 27, 2019
@kwstannard

Copy link
Copy Markdown

Noting here for posterity and search crawlers that this was a breaking change for us, causing a NoMethodError #flash on ActionDispatch::Request.

https://github.com/rails/rails/blob/v5.2.6/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L170

We were able to just remove csrf protection on our API controllers to get around the failure as I am under the impression that csrf is not needed for APIs.

I consider this to be a problem with Rails though. It is not reasonable to expect this change to have caused that error.

kwstannard referenced this pull request in rails/rails Nov 30, 2021
this commit removes some direct access to `env`.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Aesthetikx@BookOfGreg@pcarn@kwstannard@Snailslug
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Only include React::Rails::TestHelper in test environment - #996

Merged
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers
Jul 27, 2019
Merged

Only include React::Rails::TestHelper in test environment#996
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers

Conversation

@Aesthetikx

Copy link
Copy Markdown
Contributor

Based on this discussion in the rails repository I determined that the latest version of react-rails (2.5.0, not present in 2.4.7) inadvertently causes action_controller/test_case to be required, which breaks ActionController::Live streaming in development and presumably production environments.

/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:23:in`<module:Live>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:18:in `<module:ActionController>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:13:in `<top (required)>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `blockinrequire' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:614:in `<module:Behavior>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:610:in `<class:IntegrationTest>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:600:in`<module:ActionDispatch>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:12:in `<top(required)>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`block in require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/react-rails-2.5.0/lib/react/rails/railtie.rb:61:in `block(2levels)in <class:Railtie>'

This change only includes React::Rails::TestHelper in the test environment.

@pcarnpcarn left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this fixed my problem

@BookOfGreg

Copy link
Copy Markdown
Contributor

Thank you for confirming this does not occur in the 2.4 branch, that helps me know there is no backport needed.
I'll look into why Chrome is breaking the test suite again, Google probably changed how the webdrivers work (again!) and then get this through as a point release as soon as I'm able to test it myself as the code and attached discussion seems sensible.
I remember copying that include code from another gem so yeah this is probably affecting a fair amount of the community.

@BookOfGregBookOfGreg self-assigned this Jun 20, 2019
@pcarn

Copy link
Copy Markdown

@BookOfGreg Can this be merged soon so we can use it? Thanks!

@BookOfGreg

Copy link
Copy Markdown
Contributor

I need the ChromeDriver fix first. #1004
The tests won't run without it.
I'd love some help!

@BookOfGregBookOfGreg mentioned this pull request Jul 27, 2019
@BookOfGreg

BookOfGreg commented Jul 27, 2019

Copy link
Copy Markdown
Contributor

@Aesthetikx@pcarn I re-ran the tests with master merged (#1005 , Finished work on #1004 ) and tests passed there.

Released in 2.6.0

@BookOfGreg
BookOfGreg merged commit a03a404 into reactjs:masterJul 27, 2019
@kwstannard

Copy link
Copy Markdown

Noting here for posterity and search crawlers that this was a breaking change for us, causing a NoMethodError #flash on ActionDispatch::Request.

https://github.com/rails/rails/blob/v5.2.6/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L170

We were able to just remove csrf protection on our API controllers to get around the failure as I am under the impression that csrf is not needed for APIs.

I consider this to be a problem with Rails though. It is not reasonable to expect this change to have caused that error.

kwstannard referenced this pull request in rails/rails Nov 30, 2021
this commit removes some direct access to `env`.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Aesthetikx@BookOfGreg@pcarn@kwstannard@Snailslug
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Only include React::Rails::TestHelper in test environment - #996

Merged
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers
Jul 27, 2019
Merged

Only include React::Rails::TestHelper in test environment#996
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers

Conversation

@Aesthetikx

Copy link
Copy Markdown
Contributor

Based on this discussion in the rails repository I determined that the latest version of react-rails (2.5.0, not present in 2.4.7) inadvertently causes action_controller/test_case to be required, which breaks ActionController::Live streaming in development and presumably production environments.

/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:23:in`<module:Live>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:18:in `<module:ActionController>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:13:in `<top (required)>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `blockinrequire' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:614:in `<module:Behavior>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:610:in `<class:IntegrationTest>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:600:in`<module:ActionDispatch>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:12:in `<top(required)>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`block in require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/react-rails-2.5.0/lib/react/rails/railtie.rb:61:in `block(2levels)in <class:Railtie>'

This change only includes React::Rails::TestHelper in the test environment.

@pcarnpcarn left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this fixed my problem

@BookOfGreg

Copy link
Copy Markdown
Contributor

Thank you for confirming this does not occur in the 2.4 branch, that helps me know there is no backport needed.
I'll look into why Chrome is breaking the test suite again, Google probably changed how the webdrivers work (again!) and then get this through as a point release as soon as I'm able to test it myself as the code and attached discussion seems sensible.
I remember copying that include code from another gem so yeah this is probably affecting a fair amount of the community.

@BookOfGregBookOfGreg self-assigned this Jun 20, 2019
@pcarn

Copy link
Copy Markdown

@BookOfGreg Can this be merged soon so we can use it? Thanks!

@BookOfGreg

Copy link
Copy Markdown
Contributor

I need the ChromeDriver fix first. #1004
The tests won't run without it.
I'd love some help!

@BookOfGregBookOfGreg mentioned this pull request Jul 27, 2019
@BookOfGreg

BookOfGreg commented Jul 27, 2019

Copy link
Copy Markdown
Contributor

@Aesthetikx@pcarn I re-ran the tests with master merged (#1005 , Finished work on #1004 ) and tests passed there.

Released in 2.6.0

@BookOfGreg
BookOfGreg merged commit a03a404 into reactjs:masterJul 27, 2019
@kwstannard

Copy link
Copy Markdown

Noting here for posterity and search crawlers that this was a breaking change for us, causing a NoMethodError #flash on ActionDispatch::Request.

https://github.com/rails/rails/blob/v5.2.6/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L170

We were able to just remove csrf protection on our API controllers to get around the failure as I am under the impression that csrf is not needed for APIs.

I consider this to be a problem with Rails though. It is not reasonable to expect this change to have caused that error.

kwstannard referenced this pull request in rails/rails Nov 30, 2021
this commit removes some direct access to `env`.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Aesthetikx@BookOfGreg@pcarn@kwstannard@Snailslug
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Only include React::Rails::TestHelper in test environment - #996

Merged
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers
Jul 27, 2019
Merged

Only include React::Rails::TestHelper in test environment#996
BookOfGreg merged 1 commit into
reactjs:masterfrom
Aesthetikx:conditional-test-helpers

Conversation

@Aesthetikx

Copy link
Copy Markdown
Contributor

Based on this discussion in the rails repository I determined that the latest version of react-rails (2.5.0, not present in 2.4.7) inadvertently causes action_controller/test_case to be required, which breaks ActionController::Live streaming in development and presumably production environments.

/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:23:in`<module:Live>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:18:in `<module:ActionController>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_controller/test_case.rb:13:in `<top (required)>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `blockinrequire' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:614:in `<module:Behavior>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:610:in `<class:IntegrationTest>'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:600:in`<module:ActionDispatch>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/testing/integration.rb:12:in `<top(required)>' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in`block in require' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency' /home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'/home/john/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/react-rails-2.5.0/lib/react/rails/railtie.rb:61:in `block(2levels)in <class:Railtie>'

This change only includes React::Rails::TestHelper in the test environment.

@pcarnpcarn left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this fixed my problem

@BookOfGreg

Copy link
Copy Markdown
Contributor

Thank you for confirming this does not occur in the 2.4 branch, that helps me know there is no backport needed.
I'll look into why Chrome is breaking the test suite again, Google probably changed how the webdrivers work (again!) and then get this through as a point release as soon as I'm able to test it myself as the code and attached discussion seems sensible.
I remember copying that include code from another gem so yeah this is probably affecting a fair amount of the community.

@BookOfGregBookOfGreg self-assigned this Jun 20, 2019
@pcarn

Copy link
Copy Markdown

@BookOfGreg Can this be merged soon so we can use it? Thanks!

@BookOfGreg

Copy link
Copy Markdown
Contributor

I need the ChromeDriver fix first. #1004
The tests won't run without it.
I'd love some help!

@BookOfGregBookOfGreg mentioned this pull request Jul 27, 2019
@BookOfGreg

BookOfGreg commented Jul 27, 2019

Copy link
Copy Markdown
Contributor

@Aesthetikx@pcarn I re-ran the tests with master merged (#1005 , Finished work on #1004 ) and tests passed there.

Released in 2.6.0

@BookOfGreg
BookOfGreg merged commit a03a404 into reactjs:masterJul 27, 2019
@kwstannard

Copy link
Copy Markdown

Noting here for posterity and search crawlers that this was a breaking change for us, causing a NoMethodError #flash on ActionDispatch::Request.

https://github.com/rails/rails/blob/v5.2.6/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L170

We were able to just remove csrf protection on our API controllers to get around the failure as I am under the impression that csrf is not needed for APIs.

I consider this to be a problem with Rails though. It is not reasonable to expect this change to have caused that error.

kwstannard referenced this pull request in rails/rails Nov 30, 2021
this commit removes some direct access to `env`.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Aesthetikx@BookOfGreg@pcarn@kwstannard@Snailslug