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
"
Pour Rails, passez à /var/app/current
puis comme @juanpastas l'a dit, exécutez Rails_ENV=production bundle exec Rails c
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
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 .
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>
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
.
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é.