ruby on rails - semilla - ¿Se puede ejecutar una consola de rieles o un comando de rastrillo en el entorno elástico de las habichuelas mágicas?
jack y las habichuelas mágicas (7)
Configuré un entorno RoR en AWS ''beanstalk elástico. Puedo entrar a mi instancia de EC2. Mi directorio de inicio es / home / ec2-user , que está efectivamente vacío. Si me muevo hacia arriba en un directorio, también hay un directorio / home / webapp al que no tengo acceso.
¿Hay alguna forma de ejecutar un comando de rastreo o una consola de rieles en mi instancia elástica Beanstalk?
Si Usage: rails new APP_PATH [options]
Rails Console , obtengo Usage: rails new APP_PATH [options]
Si escribo RAILS_ENV = production bundle exec rails console , obtengo " Could not locate Gemfile
"
Me gusta crear un archivo eb_console
en la raíz de mi aplicación de rieles, luego chmod u+x
it. Contiene lo siguiente:
ssh -t ec2-user@YOUR_EC2_STATION.compute.amazonaws.com ''cd /var/app/current && bin/rails c''
De esta manera, solo tengo que ejecutar:
./eb_console
como si hubiera corrido heroku run bundle exec rails c
.
Ninguna de estas soluciones mencionadas aquí funcionó para mí, así que preparé un pequeño guión que puse en script / aws-console.
Puede ejecutarlo desde el directorio / var / app / current como root:
eb ssh
cd /var/app/current
sudo script/aws-console
Mi script se puede encontrar como un Gist aquí .
Ninguna de las otras respuestas funcionó para mí, así que fui buscando - esto está funcionando para mí ahora en una pila de judías elásticas 64 bits amazon linux 2016.03 V2.1.2 ruby 2.2 (puma) pila
cd /var/app/current
sudo su
rake rails:update:bin
bundle exec rails console
eso me devuelve la consola esperada
Loading production environment (Rails 4.2.6)
irb(main):001:0>
Ninguno de estos funcionaba para mí, incluido el script aws-console. Finalmente terminé creando un directorio de script
en /var/app/current
y luego creando un archivo de rails
en ese directorio como esquema por esta respuesta en otra pregunta de SO .
eb ssh myEnv
cd /var/app/current
sudo mkdir script
sudo vim script/rails
Agregue esto al archivo y guárdelo:
echo #!/usr/bin/env ruby
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
APP_PATH = File.expand_path(''../../config/application'', __FILE__)
require File.expand_path(''../../config/boot'', __FILE__)
require ''rails/commands''
Entonces hazlo ejecutable y ejecútalo:
sudo chmod +x script/rails
sudo script/rails console
Y funcionó.
No sé por qué, pero dado que EBS ejecuta todo como root, esto funcionó para mí:
sudo su
bundle exec rails c production
Para los rieles, salte a /var/app/current
luego, como dijo @juanpastas, ejecute RAILS_ENV=production bundle exec rails c
Tienes que encontrar la carpeta con tu Gemfile: p.
Para hacer eso, eche un vistazo a la configuración del servidor web. Debe haber una configuración que indique dónde está el directorio de la aplicación.
Tal vez sepa dónde está su aplicación.
Pero en caso de que no lo sepas, intentaré:
grep -i your_app_name /etc/apache/*
grep -i your_app_name /etc/apache/sites-enabled/*
Para buscar archivos que contengan your_app_name en la configuración de Apache.
O si estás usando nginx, reemplaza apache
arriba por nginx
.
después de encontrar la carpeta de la aplicación, cd en ella y ejecute RAILS_ENV=production bundle exec rails c
.
Asegúrese de que su aplicación esté configurada para ejecutarse en producción en la configuración de Apache o nginx.