Ошибка URI Rails / Passenger sub - PullRequest
       2

Ошибка URI Rails / Passenger sub

3 голосов
/ 01 сентября 2010

Я пытаюсь развернуть приложение Rails 3.0.0 на подчиненном URI с использованием пассажира 2.2.15.

Я полагаю, что я внес корректные RailsBaseURI изменения в мой http.conf, имею символическую ссылкупод URI к общедоступному каталогу моего приложения и добавил следующую строку кода в environments/production.rb:

config.action_controller.relative_url_root = "/sub_uri"

Я делал это несколько раз перед rails3.0.0.Тем не менее, приложение не будет запускаться.Сбой со следующей ошибкой Пассажира:

Error Message: wrong number of arguments(1 for 0)

Exception class: ArgumentError

/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.0/lib/action_controller/railtie.rb 54 in `relative_url_root='

Есть ли несовместимость между пассажиром 2.2.15 и рельсами 3.0.0, которая влияет на суб URI?

Любая помощь, решающая эту ошибку, оченьоценены.

Ответы [ 2 ]

6 голосов
/ 01 сентября 2010

Сеттер устарел, его нет в actionpack/lib/action_controller/railtie.rb.

Как видно здесь (actionpack/lib/action_controller/depreciated/base.rb):

module ActionController
  class Base
    # Deprecated methods. Wrap them in a module so they can be overwritten by plugins
    # (like the verify method.)
    module DeprecatedBehavior #:nodoc:
      def relative_url_root
        ActiveSupport::Deprecation.warn "ActionController::Base.relative_url_root is ineffective. " <<
          "Please stop using it.", caller
      end

      def relative_url_root=
        ActiveSupport::Deprecation.warn "ActionController::Base.relative_url_root= is ineffective. " <<
          "Please stop using it.", caller
      end
    end
  end
end

В actionpack/lib/action_controller/metal/compatibility.rb вы можете видеть, что его установщик является ENV переменной:

self.config.relative_url_root = ENV['RAILS_RELATIVE_URL_ROOT']

Так что вам нужно установить переменную ENV: RAILS_RELATIVE_URL_ROOT="/sub_uri"

0 голосов
/ 29 ноября 2012

Чтобы установить переменную среды, добавьте:

SetEnv RAILS_RELATIVE_URL_ROOT /sub_uri

В раздел VirtualHost (или аналогичный) вашей конфигурации apache убедитесь, что он читается, перезапустив apache и passenger.

cd <your_rails_project>
sudo apache2ctl graceful
touch tmp/restart
...