[RUBY-ON-RAILS] ActionController :: Base.relative_url_root에 대한 대체 무엇입니까?
RUBY-ON-RAILSActionController :: Base.relative_url_root에 대한 대체 무엇입니까?
나는 rails3에 응용 프로그램을 레일 2.X를 포팅하고; 우리는 foo는 - 응용 프로그램을 호출 할 수 있습니다. 푸 - 응용 프로그램은 main_rails_app.com/foo-app에서 큰 레일 애플 리케이션과 삶의 한 부분입니다. 이전에 우리는 단지 우리의 foo는-응용 프로그램 경로가 제대로 작동하는지 확인하기 위해 우리의 foo는-응용 프로그램 제작 설정에서 다음을 설정합니다 :
ActionController::Base.relative_url_root = "/foo-app"
그러나 rails3으로, 지금 얻을 :
DEPRECATION WARNING: ActionController::Base.relative_url_root is ineffective. Please stop using it.
나는 이후 다음에 설정 항목을 변경 :
config.action_controller.relative_url_root = "/foo-app"
이것은 주로 외부 자원 (자바 스크립트 / CSS / 이미지)에 대한 모든 호출 / foo는-응용 프로그램을 사용하는 것입니다 작동합니다. 하지만, 내 경로 중 어느 것도 적절하게 변경하지, 또는 다른 방법을 넣어, foo는-응용 프로그램 root_path는 '/'내가 기대 '/ foo는-응용 프로그램'나를 수 있습니다.
두 가지 질문 :
해결법
-
==============================
1.당신은 routes.rb 파일 내에서 모든 것을 처리 할 수 있어야합니다. 범위에있는 모든 현재의 경로를 감싸 라 예를 들어.
당신은 routes.rb 파일 내에서 모든 것을 처리 할 수 있어야합니다. 범위에있는 모든 현재의 경로를 감싸 라 예를 들어.
scope "/context_root" do resources :controller resources :another_controller match 'welcome/', :to => "welcome#index" root :to => "welcome#index" end
그런 다음 그들은 당신의 컨텍스트 루트를 포함하여, 그에 따라 경로를 표시해야합니다 레이크 경로를 통해 라우팅을 확인할 수 있습니다 (relative_url_root)
-
==============================
2.당신이 승객을 통해 배포하는 경우, RackBaseURI 지시어를 사용 http://www.modrails.com/documentation/Users%20guide%20Apache.html#RackBaseURI
당신이 승객을 통해 배포하는 경우, RackBaseURI 지시어를 사용 http://www.modrails.com/documentation/Users%20guide%20Apache.html#RackBaseURI
그렇지 않으면, 다음 블록과의 config.ru에서 실행 문을 포장 할 수 있습니다 :
map ActionController::Base.config.relative_url_root || "/" do run FooApp::Application end
그럼 당신은 단지 "/ foo는-응용 프로그램"에 환경 변수 RAILS_RELATIVE_URL_ROOT을 설정해야합니다. 이것은 심지어 보석 또는 플러그인에서 설정 한 경로에 적용됩니다.
경고 :이 두 솔루션을 함께 사용하지 마십시오.
-
==============================
3.내가해야처럼 지나치게 복잡하게 이것을 및 / 또는 뭔가가 있지만,이 문제가 지금 여기있는 동안 나를 실망하고있다 것은 내 노트입니다 생각합니다.
내가해야처럼 지나치게 복잡하게 이것을 및 / 또는 뭔가가 있지만,이 문제가 지금 여기있는 동안 나를 실망하고있다 것은 내 노트입니다 생각합니다.
동적 및 정적 라우팅은 2 점으로 각각 두 개의 문제가 있습니다 :
한 가지 방법은 네 가지 점을 해결하기 위해 :
# config.ru map '/relative_root' do run Myapp::Application end
커버 URL은, 예를 들어 URL 헬퍼에 의해 생성 그래서 UserController 주어, users_path은 상대 URL 루트 접두어됩니다.
# config.ru class ScriptName def initialize(app, name) @app = app @name = name end def call(env) env['SCRIPT_NAME'] += @name @app.call(env) end end use ScriptName, '/relative_root' run Rails.application
# config/routes.rb Myapp::Application.routes.draw do scope '/relative_root' do ... end end
이 같은 설정을 감안할 때 :
upstream myapp { server localhost:3000; } server { ... location /relative_root { proxy_pass http://myapp/; } }
Nginx에는 /의 relative_root을 제거하며, 레일 응용 프로그램은 표시되지 않습니다. 당신은 레일 앱 그래서 그것을보고해야하는 경우, 하나의 방법은 proxy_pass 라인을 변경하는 것입니다 :
... proxy_pass http://myapp/relative_root/; ...
from https://stackoverflow.com/questions/3181746/what-is-the-replacement-for-actioncontrollerbase-relative-url-root by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 카피 바라의 URL에 POST합니까? (0) | 2020.02.14 |
---|---|
[RUBY-ON-RAILS] LEFT OUTER 레일에 가입 4 (0) | 2020.02.14 |
[RUBY-ON-RAILS] railties을 찾을 수 없습니다 : 난간 (0) | 2020.02.14 |
[RUBY-ON-RAILS] "빈은 / 레일 : 없음 같은 파일 또는 디렉터리"Heroku가에 / 루비 2 개 레일 4w를 (0) | 2020.02.14 |
[RUBY-ON-RAILS] 액티브 / 레일의 updated_at 컬럼의 created_at 이름 바꾸기 (0) | 2020.02.14 |