Есть ли у Rails параллельный * ноль * по умолчанию? - PullRequest
1 голос
/ 02 апреля 2012

Я работаю над промежуточным программным обеспечением для рельсов, работая с довольно свежей версией:

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)

Но, к сожалению, это все ломает. Значит ли это, что мое приложение не защищено от потоков?

1 Ответ

4 голосов
/ 02 апреля 2012

Вы должны увидеть следующую запись в config / environment / production.rb

  # Enable threaded mode
  # config.threadsafe!

Раскомментировать в JRuby или другой дружественной к потокам среде для развертывания в поточном режиме.

...