Я работаю над промежуточным программным обеспечением для рельсов, работая с довольно свежей версией:
pfernand-2-mn:~ pfernand$ rails -v
Rails 3.1.2
Это вывод rake middleware
:
use ActionDispatch::Static
** use Rack::Lock **
use ActiveSupport::Cache::Strategy::LocalCache
use Rack::Runtime
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use ActionDispatch::RemoteIp
use Rack::Sendfile
use ActionDispatch::Callbacks
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore
use ActionDispatch::Flash
use ActionDispatch::ParamsParser
use Rack::MethodOverride
use ActionDispatch::Head
use ActionDispatch::BestStandardsSupport
run MyApp::Application.routes
Дело в том, что второй компонент, Rack::Lock
, насколько я знаю, , , мьютекс , охватывающий весь стек фригидных рельсов (!) .
Значит ли это, что в rails нет параллелизма, независимо от того, какую платформу вы используете? (Я использую JRuby).
Я знаю, что могу снять блокировку с помощью:
config.middleware.delete(Rack::Lock)
Но, к сожалению, это все ломает. Значит ли это, что мое приложение не защищено от потоков?