문제

저는 현재 Dreamhost에서 Rails 2.3.5 앱을 실행하려고합니다.

상황은 다음과 같습니다. DreamHost의 서버에는 Rails 2.2.2가 설치되어 있습니다. 물론 공유 호스트의 레일 버전을 업데이트 할 수 없으므로 공급 업체에서 레일을 얼 렸습니다. Rails 2.3.5에는 랙 v1.0.1 보석이 필요합니다. Dreamhost는 랙 v1.0.0 보석을 사용합니다. 그래서 내가 정의하려고 할 때 :

config.gem "rack", :version => "1.0.1"

나는 얻다:

can't activate rack (~> 1.0.1, runtime) for [], already activated rack-1.0.0 for []

따라서 제가해야 할 일은 앱의 1.0.1 사용 요청을 우회하고 DreamHost의 1.0.0을 사용하는 것입니다. 누구든지 이것을 구성하는 방법을 아는 사람이 있습니까? 가능합니까? 도와 주셔서 감사합니다.

도움이 되었습니까?

해결책

당신은 거의 항상 당신의 응용 프로그램에 의존하는 보석을 풀고 싶어합니다. vendor 폴더. 당신은 이것으로 그것을 할 수 있습니다 rake 명령:

rake gems:unpack:dependencies

폴더가 생성됩니다 vendor/gems 응용 프로그램의 루트 폴더 아래에서 당신이 선언 한 모든 보석을 풀고 config.gem 그것에 명령하십시오.

이것은 불일치로 문제를 해결할뿐만 아니라 rack 버전은 또한 개발 중에 사용하는 것과 동일한 버전의 보석을 사용하고 있는지 확인하여 향후 많은 잠재적 인 두통을 방지 할 수 있습니다.

다른 팁

Dreamhost는 현재이 문제를 지원 Wiki에서 해결했습니다.

http://wiki.dreamhost.com/ruby_on_rails#rails_2.3.5_-_rack_1.0_already_activated_.28fix.29

그 페이지에서 :

Rails 2.3.5를 사용하면 랙 1.0이 이미 활성화되어 있기 때문에 랙 1.0.1을로드 할 수 없다는 승객의 문제가 발생합니다.

이것을 해결하는 한 가지 방법은 레일을 얼리고 랙 보석을 공급 업체/보석/랙 -1.0.1로 포장하는 것입니다.

레일과 랙이 공급 업체/레일 및 공급 업체/gems/rack-1.0.1에 있으면 파일에서 Action_Controller를 수정해야합니다.

라인 번호 34와 35는 댓글을 달아야하고 공급 업체/보석에서 랙을로드하기 위해 다음을 추가해야합니다.

   load "#{RAILS_ROOT}/vendor/gems/rack-1.0.1/lib/rack.rb"

최종 결과는 다음과 같이 보일 것입니다.

   #gem 'rack', '~> 1.0.1'
   #require 'rack'
   load "#{RAILS_ROOT}/vendor/gems/rack-1.0.1/lib/rack.rb"

진짜 문제는 승객이 이미 랙 1.0을로드하고 승객이 해킹이 사라지려면 1.0.1을로드해야한다고 생각합니다.

rake gems:unpack:dependencies 공급 업체/gems 폴더에 레이크를 풀 수는 없습니다.

Dreamhost 문제의 경우 Matt가 말한 것을해야합니다. 레일을 2.3.4로 동결.

rake rails:freeze:gems VERSION=2.3.4

DreamHost는 랙 1.0.0을 예압하는 이전 버전의 승객을 사용합니다. 랙 1.0.0이 사전로드 된 후에는 랙 1.0.1을로드 할 수 없습니다. 따라서 DH에서 가능한 최신 버전의 레일은 Rails 2.3.4 및 Rack 1.0.0입니다.

2.3.5로 업그레이드를 시도했을 때도 같은 문제가 발생했습니다.

여전히 Rails 2.2.2를 실행하는 서버에 어떤 서버가 있는지 궁금합니다. 나는 Dreamhost가 지금까지 모든 사람을 2.3.4로 옮겼다 고 생각했다. 나는 3 개월 전에 그들에게 불만을 제기했고 그들은 현재 레일 버전을 설치할 수 있도록 내 서버에서 승객을 업그레이드했습니다. Rails 2.3.5가 앱에 필수적인 경우 지원 티켓을 제출하는 것이 좋습니다. 그러나 2.3.4에서 2.3.5 사이에는 많은 변화가 없었으므로 앱이 2.3.4에서도 실행될 가능성이 있습니다. 공급 된 2.3.4에서 실행해 보셨습니까?

이것은 누락 된 보석에 관한 것이 아니라 불일치 버전으로 두 번 필요한 보석에 관한 것입니다. 레이크 보석 : 포장 풀기 : 종속성은 그것을 고치지 않습니다 (시도했습니다).

Dreamhost의 승객 버전에 다시 문제가 있다고 생각합니다. 내 서버 (Buenosaires)에는 승객 2.2.5가 있습니다. 최신 승객 버전은 2.2.7입니다.

Rails 2.3.5는 랙 1.0.1을 구체적으로 원한 것 같습니다. 그래서 GEM 업데이트 랙 -v = 1.0.1을했을 때 Rails 2.3.5가 바로 시작되었습니다.

랙 1.0.1을 원하는 레일이있는이 모든 것은 ActionPack의 작은 종속성 요구 사항 버그로 상당히 쉽게 해결할 수 있습니다.

나를 위해 편집하기에 충분했습니다 vendor/rails/actionpack/lib/action_controller.rb 34 행에서 gem 'rack', '~> 1.0.1' 에게 gem 'rack', '~> 1.0' 그리고 문제는 사라졌습니다.

보다: https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/3685-actionpack-235-gem-declares-incativeability-with-rack-110

DreamHost는 랙 및 레일을 업데이트하고 있습니다. http://www.dreamhoststatus.com/2009/12/21/ruby-gem-updates/

나는 그것이 그것을 해결한다고 생각한다.

나는 현재 가장 좋은 것은 모든 것을 풀고 Dreamhost에있는 것을 사용하는 것이라고 생각합니다. 그들은 현재 Rails 2.3.4를 가지고 있으며 하루나 이틀을 기다릴 수 있다면 Dreamhost는 Rails Gems를 2.3.5로 업그레이드하고 있습니다 (12 월 21 일에 어제 이미 업그레이드되었을 것입니다. 그러나 어떤 이유로 든 그들은 설명하지 않았습니다. 여전히 2.3.4).

fwiw, 나는 보석 동결이 문제를 해결하지 못한다는 것을 확인할 수 있습니다. 실제로, 배치 전에 폭발하기 전에 (DH의 랙 0.3.0을 사용하여, 어떻게 든! 아마도 마침내 내 장난감/컨셉 앱 앱을 작업을 수행하려면 '실제'호스팅으로 옮길 때가되었을 것입니다.

업데이트 : 내 서버는 2009 년 12 월 24 일에 Rack 1.0.1로 업그레이드되어 문제를 해결했습니다. 귀하가 여전히 귀하의 계정에 문제가 발생하고 있다면 메시징 지원을 권장합니다. 그들은 내 경우에 상당히 반응이 좋았습니다 (전자 메일, 행동이 아니라 가격에 대해서는 실제로 모든 것을 가질 수는 없습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top