web-dev-qa-db-fra.com

Pouvez-vous exécuter une commande Rails console ou rake dans l'environnement de haricot élastique?

J'ai mis en place un environnement RoR sur le haricot élastique AWS. Je peux ssh dans mon instance EC2. Mon répertoire personnel est/home/ec2-user, qui est effectivement vide. Si je monte dans un répertoire, il y a aussi un répertoire / home/webapp auquel je n'ai pas accès.

Existe-t-il un moyen d'exécuter une commande rake ou console Rails sur mon instance de beanstalk élastique?

Si je tape console Rails je reçois Usage: Rails new APP_PATH [options] Si je tape Rails_ENV = bundle de production exec Rails console, j'obtiens "Could not locate Gemfile "

43
gitb

Pour Rails, passez à /var/app/current puis comme @juanpastas l'a dit, exécutez Rails_ENV=production bundle exec Rails c

52
kross

Je ne sais pas pourquoi, mais comme EBS exécute tout en tant que root, cela a fonctionné pour moi:

Sudo su
bundle exec Rails c production
41
everyman

Aucune de ces solutions mentionnées ici n'a fonctionné pour moi, j'ai donc préparé un petit script que j'ai mis dans script/aws-console.

Vous pouvez l'exécuter à partir du répertoire/var/app/current en tant que root:

eb ssh
cd /var/app/current
Sudo script/aws-console

Mon script peut être trouvé sous la forme d'un Gist here .

14
wrdevos

Aucune des autres réponses n'a fonctionné pour moi, alors je suis allé chercher - cela fonctionne maintenant pour moi sur un beanstalk élastique 64 bits Amazon linux 2016.03 V2.1.2 Ruby 2.2 (puma) stack

cd /var/app/current
Sudo su
rake Rails:update:bin
bundle exec Rails console

qui me renvoie la console attendue

Loading production environment (Rails 4.2.6)
irb(main):001:0>
8
Jeremiah

J'aime créer un eb_console fichier à la racine de mon Rails app, puis chmod u+x il. Il contient les éléments suivants:

ssh -t ec2-user@YOUR_EC2_STATION.compute.amazonaws.com  'cd /var/app/current && bin/Rails c'

De cette façon, je dois juste exécuter:

./eb_console

comme j'aurais couru heroku run bundle exec Rails c.

3
Sébastien Saunier

Rien de tout cela ne fonctionnait pour moi, y compris le script aws-console. J'ai finalement fini par créer un répertoire script dans /var/app/current puis en créant un fichier Rails dans ce répertoire comme contour par cette réponse sur une autre SO question .

eb ssh myEnv
cd /var/app/current
Sudo mkdir script
Sudo vim script/Rails

Ajoutez ceci au fichier et enregistrez:

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'

Rendez-le ensuite exécutable et exécutez-le:

Sudo chmod +x script/Rails
Sudo script/Rails console

Et ça a marché.

0
jangosteve