Pergunta

Estou a implementar o ambiente de produção do meu ruby on rails application com o capistrano gem para um servidor virtual privado.Eu execute o seguinte comando para implantar:

bundle exec cap production deploy

Tudo parece estar funcionando bem, a menos que eu tente verificar o ambiente que o meu atual versão de produção está operando.

O jeito que eu uso para verificar se este está em execução:

rails console
Rails.env

A resposta que recebe é "desenvolvimento", o que é bastante assustador.

Em outro teste:quando eu executar o seguinte na minha versão atual:

rails db

Eu recebo um erro que indica que mydatabase_development não é criado.

Meu aplicativo parece estar funcionando bem, mas eu não sei se isso vai causar grandes problemas.Primeiro de tudo:Existe uma maneira de determinar se eu a minha cópia é, na verdade, executando em desenvolvimento?Em segundo lugar:Considerando que eu tenho um problema, como faço para configurar o capistrano para implantar um ambiente de produção?

Foi útil?

Solução

Tenha em mente que rails console se envolve no ambiente atual, como ditado pela RAILS_ENV ou RACK_ENV em seu ambiente.Se você não definir explicitamente em seu servidor, em seguida, ele provavelmente irá padrão para development.

Uma maneira de corrigir isso é para forçá-lo em sua .bash_profile ou seja o shell de perfil que você está usando.Por exemplo:

export RAILS_ENV=production

Que deve torná-lo disponível e quando você se envolver o Rails shell vai chutar corretamente.

Como uma nota, você não deve mesmo ser capaz de iniciar no modo de desenvolvimento no seu servidor de produção, pois não deve ser uma entrada com o nome no config/database.yml.Uma melhor prática é armazenar config/database.yml apenas no servidor de produção e afastá-lo durante a sua Capistrano implantar.

Adicione isso ao seu config/deploy.rb:

set :linked_files, %w[
  config/database.yml
]

Em seguida, você criar uma produção de apenas config shared/config/database.yml que será vinculado no lugar quando você implantar.Certifique-se de excluir config/database.yml a partir de seu sistema de controle de versão, para não ficar implantado.

O motivo pelo qual seu site está provavelmente certo é porque um lançador como Passageiro define automaticamente RACK_ENV para production a menos que configurado de outra forma.Este não é o impacto de seu shell, porém, que assume a development.

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