AWSのElastic BeanstalkにRoR環境を設定しました。 EC2インスタンスにsshできます。私のホームディレクトリは/ home/ec2-userで、これは事実上空です。ディレクトリを上に移動すると、/ home/webappディレクトリにアクセスできなくなります。
Elastic BeanstalkインスタンスでrakeコマンドまたはRailsコンソールを実行する方法はありますか?
Railsコンソールと入力すると、Usage: Rails new APP_PATH [options]
Rails_ENV = production bundle exec Rails consoleと入力すると、 "Could not locate Gemfile
"
Railsの場合は、/var/app/current
その後、@ juanpastasが言ったように、Rails_ENV=production bundle exec Rails c
理由はわかりませんが、EBSはすべてをルートとして実行するので、これでうまくいきました。
Sudo su
bundle exec Rails c production
ここで説明したこれらのソリューションはどれも私にとってはうまくいきませんでしたので、script/aws-consoleに入れた小さなスクリプトを作成しました。
ルートとして/ var/app/currentディレクトリから実行できます:
eb ssh
cd /var/app/current
Sudo script/aws-console
私のスクリプトは ここの要点 として見つけることができます。
他の答えはどれも私のために働いていなかったので、私は探しに行きました-これは私のために弾力性のあるbeantalk 64ビット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
それは私に期待されるコンソールを返します
Loading production environment (Rails 4.2.6)
irb(main):001:0>
私のRailsアプリ、次にeb_console
itのルートにchmod u+x
ファイルを作成するのが好きです。次のものが含まれています。
ssh -t ec2-user@YOUR_EC2_STATION.compute.amazonaws.com 'cd /var/app/current && bin/Rails c'
このように、私はただ実行する必要があります:
./eb_console
私がheroku run bundle exec Rails c
を実行したように。
Aws-consoleスクリプトを含め、これらのいずれも機能していませんでした。最終的に/var/app/current
にscript
ディレクトリを作成し、 別のSO質問 でこの回答をアウトラインとしてそのディレクトリにRails
ファイルを作成しました。
eb ssh myEnv
cd /var/app/current
Sudo mkdir script
Sudo vim script/Rails
これをファイルに追加して保存します。
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'
次に、実行可能にして実行します。
Sudo chmod +x script/Rails
Sudo script/Rails console
そしてそれは働いた。