Pergunta

Atualmente estou no Dreamhost tentar executar um Rails 2.3.5 app.

Aqui está a situação, os servidores da Dreamhost tem Rails 2.2.2 instalado. Claro, eu não posso atualizar a versão trilhos de um servidor compartilhado, então eu congelei meus Rails no fornecedor. Rails 2.3.5 requer a jóia cremalheira v1.0.1. Dreamhost usa a jóia cremalheira v1.0.0. Então, quando eu tentar definir:

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

eu recebo:

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

Então, o que eu realmente preciso fazer é ignorar o pedido do meu aplicativo para usar 1.0.1, e utilizar Dreamhost do 1.0.0. Alguém sabe como configurar isso? Será que é mesmo possível? Obrigado pela ajuda.

Foi útil?

Solução

Você quase sempre deseja descompactar as jóias que a sua aplicação depende para a pasta vendor. Você pode fazer isso com este comando rake:

rake gems:unpack:dependencies

Isto irá criar uma vendor/gems pasta na pasta raiz do seu aplicativo e descompactar todas as jóias que você declarado com o comando config.gem para ele.

Isto não só vai resolver o seu problema com descasamento versões rack, mas também certificar-se de que você está usando exatamente o mesmo versões de gemas em produção como você está usando em desenvolvimento, o que pode evitar muitas dores de cabeça potenciais no futuro.

Outras dicas

Dreamhost abordou esta questão em seu wiki apoio agora.

http://wiki.dreamhost.com/ Ruby_on_rails # Rails_2.3.5 _-_ Rack_1.0_already_activated_.28fix.29

A partir dessa página:

Ao usar Rails 2.3.5 você vai ter um problema de Passageiros dizendo cremalheira 1.0.1 não pode ser carregado porque cremalheira 1.0 já está ativado.

Uma maneira de resolver isso é por congelamento Rails e descompacte o gem cremalheira em vendor / gems / rack 1.0.1

Uma vez Rails e cremalheira estão nas vendor / rails e vendor / gems / rack 1.0.1 você deve modificar action_controller no arquivo: vendor / rails / actionpack / lib / action_controller.rb

Em números das linhas 34 e 35 devem ser comentada e adicione o seguinte ao rack de carga de fornecedor / gemas

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

O resultado final deve ser algo como isto:

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

O problema real é que Passenger já cargas cremalheira 1,0 e acredito Passageiro deve carregar 1.0.1 para que este hack para ir embora.

rake gems:unpack:dependencies não permitem que você ancinho descompactar para a pasta de vendor / gems.

Para a emissão Dreamhost, você deve fazer o que Matt disse. Congelar trilhos a 2.3.4.

rake rails:freeze:gems VERSION=2.3.4

Dreamhost usa uma versão mais antiga de passageiros que preloads acumular 1.0.0. Você não pode carregar acumular 1.0.1 vez cremalheira 1.0.0 foi pré-carregado. Portanto, a última versão do rails possível para DH é Rails 2.3.4 e 1.0.0 da cremalheira.

Eu corri para o mesmo problema quando eu tentei a atualização para 2.3.5.

Eu me pergunto o servidor estiver em que ainda corre Rails 2.2.2? Pensei Dreamhost teve todo mundo se mudou para 2.3.4 agora. Eu reclamei com eles 3 meses atrás e eles atualizado de passageiros no meu servidor no dia seguinte para que eu pudesse instalar a versão atual Rails. Então eu recomendo que você arquivar um ticket de suporte se Rails 2.3.5 é vital para a sua aplicação. Mas não havia muitas mudanças entre 2.3.4 e 2.3.5, então as chances são de seu aplicativo será executado tão bem em 2.3.4. Você tentou executá-lo em vendorizadas 2.3.4?

Não se trata de uma jóia em falta, trata-se de uma jóia que está sendo exigido duas vezes com versões descasamento. rake gems: unpack:. dependências não corrigir isso (eu tentei)

Eu suspeito que é um problema com a versão de passageiros do Dreamhost novamente. Meu servidor (buenosaires) tem Passageiros 2.2.5. Última versão de passageiros é 2.2.7.

A atualização gem simples de rack não fez trabalho para me porque parece que Rails 2.3.5 desejos cremalheira 1.0.1 especificamente. Então, quando eu fiz um rack atualização gem -v = 1.0.1, Rails 2.3.5 começou a direita acima.

Aparentemente, essa coisa toda com Rails querendo cremalheira 1.0.1 é um pequeno bug requisito de dependência em actionpack que pode ser resolvido com bastante facilidade.

Para mim, foi o suficiente para editar vendor/rails/actionpack/lib/action_controller.rb na linha 34 da gem 'rack', '~> 1.0.1' para gem 'rack', '~> 1.0' eo problema foi embora.

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

Dreamhost é atualizar rack e Rails: http: // www .dreamhoststatus.com / 2009/12/21 / ruby-gem-updates /

Eu acho que resolve-lo.

Eu acho que no momento o melhor seria a tudo descongelar e usar o que está em dreamhost. Eles têm actualmente trilhos 2.3.4 e se você pode esperar um dia ou dois - dreamhost é atualizar trilhos gemas para 2.3.5 (que deveria ter sido já atualizado ontem em 21 de dezembro -, mas por algum motivo eles não explicou que eles são ainda em 2.3.4).

FWIW, posso confirmar que o congelamento a gema não resolve o problema; na verdade, em que antes da minha implantar estava explodindo (usando cremalheira 0.3.0 da DH, de alguma forma!), agora meus spin-up explode com o mesmo erro visto acima. Talvez finalmente é hora de mover o meu brinquedo / prova de aplicativo conceito de 'real' de hospedagem se eu quiser obter qualquer trabalho feito.

UPDATE: O meu servidor foi atualizado para rack 1.0.1 em 24 de dezembro de 2009, resolvendo o problema para mim. Se você ainda estiver enfrentando problemas em sua conta Eu recomendaria suporte de mensagens; eles foram bastante sensível no meu caso (com e-mails, não a ação, mas para o preço que você realmente não pode ter tudo).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top