Comments (11)
Development on Ruby 3.0 has not yet started. Matz is quick at changing his opinion (see Module#prepend
).
I don't see a threading issue, tbh, as the autoloads should be triggered at load time.
from rack-protection.
I'm not sure what "should be triggered at load time" means. The docs about Kernel#autoload say:
Registers filename to be loaded (using Kernel::require) the first time that module (which may be a String or a symbol) is accessed.
Last I heard, Kernel#require
was not threadsafe. Has that changed? If not, I still question whether deferred non-threadsafe lazy-loading is correct for a core library like rack-protection, whether or not development on Ruby 3.0 has started.
from rack-protection.
But you won't lazy load anywhere but the main thread.
from rack-protection.
I guess I don't understand something about autoload/require. There is some guarantee that 2 threads can't/won't call require
at the same time?
from rack-protection.
No. But that does not have anything to do with autoload.
from rack-protection.
JRuby and Ruby 2.0 autoload is thread-safe and Rubinius autoload is going to be.
from rack-protection.
@rkh can you cite a source for that (particularly Ruby 2)? I've been trying to chase this answer down and don't see evidence for that, especially given what Matz said in the post that started this thread.
from rack-protection.
I'm also curious about it. Since I started coding with ruby, I see people talking about the autoload not being thread-safe, but I could'nt find a workaround or a official statement about that.
from rack-protection.
@joshjordan see http://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/33078 (linked in the headius/thread_safe) issue
from rack-protection.
<3
from rack-protection.
I think its safe to close this issue, autoload should be threadsafe so we won't change the design of rack-protection
for this.
from rack-protection.
Related Issues (20)
- Is AuthenticityToken broken? HOT 2
- Consider changing the repo description HOT 3
- undefined method `[]' for nil:NilClass HOT 4
- AuthenticityToken HOT 3
- Forbidden + signout using sidekiq/devise/activeadmin on production server with nginx/haproxy/thin HOT 4
- Regenerate docs
- Sinatra problem with rack-protection HOT 1
- Could not find gem 'rack-protection' in git://github.com/sinatra/rack-protection.git (at master@f405fec) HOT 2
- New stable release before merging? HOT 7
- How can I update AuthenticityToken automatically? HOT 1
- Mention the migration in GitHub Pages
- AuthenticityToken check in a rails app when no session['_csrf_token'] is set HOT 6
- JsonCsrf for GET image. HOT 4
- Rack Protection blocks all requests from proxy/frontend HOT 5
- [Warning] Session Hijacking default of HTTP_ACCEPT_LANGUAGE is broken for iOS 8+ HOT 2
- Token changes between retrieval and request HOT 1
- escaped params silently removing files HOT 3
- Rack::Protection::SessionHijacking HOT 2
- Homepage link is broken HOT 2
- Session Hijacking default of HTTP_ACCEPT_LANGUAGE is broken for IE with XHR HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rack-protection.