Ruby 1.9.1-p234, Passenger 2.2.5, Rails 2.3-стабильный закрытый поток по запросу POST - PullRequest
8 голосов
/ 27 октября 2009

Я установил Ruby 1.9.1 (p234) на сервере Ubuntu. Я пытаюсь развернуть приложение Rails, которое предлагает Rails 2.3-stable на Apache 2.2 / Passenger 2.2.5.

GET-запросы работают нормально, POST-запросы немедленно прерываются со следующей записью в журнале:

<pre>Processing UsersController#new (for 80.203.77.44 at 2009-10-24 20:54:55) [GET] Parameters: {"controller"=>"users", "action"=>"new"} Rendering template within layouts/application Rendering users/new Completed in 23ms (View: 20, DB: 0) | 200 OK [<a href="http://myapp/user/new]" rel="nofollow noreferrer">http://myapp/user/new]</a> /!\ FAILSAFE /!\ 2009-10-24 20:55:01 +0200 Status: 500 Internal Server Error closed stream /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/rewindable_input.rb:86:in <code>make_rewindable' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/rewindable_input.rb:26:in прочитать» /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/request.rb:136:in POST' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/methodoverride.rb:15:in call ' /var/www/myapp/app/releases/20091021213913/vendor/rails/actionpack/lib/action_controller/params_parser.rb:15:in call' /var/www/myapp/app/releases/20091021213913/vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb:93:in call ' /var/www/myapp/app/releases/20091021213913/vendor/rails/actionpack/lib/action_controller/failsafe.rb:26:in call' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/lock.rb:11:in блок в вызове ' : 8: в synchronize' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/lock.rb:11:in вызов /var/www/myapp/app/releases/20091021213913/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:106:in call' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/rack/request_handler.rb:95:in process_request ' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/abstract_request_handler.rb:207:in main_loop' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:378:in start_request_handler ' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:336:in block in handle_spawn_application' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/utils.rb:183:in safe_fork ' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:334:in `handle_spawn_application '

... а потом еще немного.

Я прочитал и нашел это: http://blog.labnotes.org/2009/09/01/ruby-1-9-1-p234passenger-2-2-5-tempfile-rb-fix/, который указывает на патч, который удаляет одну строку из файла Ruby 1.9.1-p234 tempfile.rb. К сожалению для меня, проверяя этот файл, я обнаружил, что наступательная линия уже была удалена. Так что это оставляет меня немного невежественным, так как моя проблема сохраняется. Есть идеи?

Ответы [ 5 ]

5 голосов
/ 04 ноября 2009

Для пассажира 2.2.8 существует обходной путь, поэтому он больше не нужен. Случайный ответ Джима выше работал для меня. Большое спасибо Джиму за помощь.

Различия в моей системе, соответственно, следующие. Я надеюсь, что это полезно.

Киллиан.

*** /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/utils.rb.orig Tue Nov  3 17:43:30 2009
--- /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/utils.rb  Tue Nov  3 17:43:46 2009
***************
*** 31,36 ****
--- 31,37 ----
  require 'etc'
  require 'fcntl'
  require 'tempfile'
+ require 'stringio'
  require 'phusion_passenger/exceptions'
  if !defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby"
    require 'phusion_passenger/native_support'


*** /usr/local/lib/ruby/1.9.1/tempfile.rb.orig  Tue Nov  3 17:44:34 2009
--- /usr/local/lib/ruby/1.9.1/tempfile.rb   Tue Nov  3 17:45:55 2009
***************
*** 137,143 ****
      # keep this order for thread safeness
      begin
        if File.exist?(@tmpname)
!         closed? or close
          File.unlink(@tmpname)
        end
        @@cleanlist.delete(@tmpname)
--- 137,143 ----
      # keep this order for thread safeness
      begin
        if File.exist?(@tmpname)
!         # closed? or close
          File.unlink(@tmpname)
        end
        @@cleanlist.delete(@tmpname)
2 голосов
/ 02 ноября 2009

Мне пришлось сделать следующее, чтобы все заработало

самоцветы / пассажиро-2.2.5 / Библиотека / phusion_passenger / utils.rb добавьте require 'stringio' в этот файл в строке 34

открыть lib / ruby ​​/ 1.9.1 / tempfile.rb строка комментария 140

И это работает как шарм.

0 голосов
/ 09 декабря 2009

При применении этого исправления я не могу перезапустить модуль Passenger более чем несколько раз, используя метод tmp / restart.txt. После этого запросы принимаются, но никогда не обслуживаются. Я подозреваю, что в патче могут быть утечки временных файлов

0 голосов
/ 06 ноября 2009

Случайное исправление Джима сработало для меня, спасибо, эта проблема сводила меня с ума.

Мне также пришлось патчить actionview (за патч Гектора Гомеса на https://rails.lighthouseapp.com/projects/8994/tickets/2188-i18n-fails-with-multibyte-strings-in-ruby-19-similar-to-2038), чтобы заставить работать рельсы и ruby ​​1.9.1.

0 голосов
/ 28 октября 2009

Привет, Дэмиен. У меня была та же проблема, и хотя я не получил точный ответ / ссылку для вас из памяти, мне пришлось исправлять стойку и не tempfile. Я надеюсь, что это помогает

...