47

AWS の Elastic Beanstalk に RoR 環境をセットアップしました。EC2 インスタンスに ssh できます。私のホーム ディレクトリは / home/ec2-userで、事実上空です。ディレクトリを上に移動すると、アクセスできない/home/webappディレクトリもあります。

Elastic Beanstalk インスタンスでrakeコマンドまたはRails コンソールを実行する方法はありますか?

rails consoleと入力するとUsage: rails new APP_PATH [options] RAILS_ENV =production bundle exec rails consoleと入力すると " Could not locate Gemfile"が表示されます

4

13 に答える 13

60

レールの場合/var/app/currentは、@juanpastas が言ったようにジャンプして実行しますRAILS_ENV=production bundle exec rails c

于 2013-10-28T15:25:08.650 に答える
45

理由はわかりませんが、EBS はすべてをルートとして実行するため、これでうまくいきました。

sudo su
bundle exec rails c production
于 2015-06-03T11:39:11.913 に答える
14

ここに記載されているこれらの解決策はどれもうまくいきませんでした。そのため、script/aws-console に小さなスクリプトを作成しました。

/var/app/current ディレクトリからルートとして実行できます。

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

私のスクリプトはGist hereとして見つけることができます。

于 2015-04-16T10:37:11.530 に答える
9

他の答えはどれも私にとってはうまくいきませんでしたので、探しに行きました-これは現在、伸縮性のあるBeantalk 64bit amazon linux 2016.03 V2.1.2 ruby​​ 2.2 (puma)スタックで機能しています

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>
于 2016-06-10T18:24:49.090 に答える
2

eb_consoleRails アプリのルートにファイルを作成するのが好きです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

于 2014-12-20T20:13:28.147 に答える
2

For Ruby 2.7:

As someone said, if you don't need env vars, run the following

BUNDLE_PATH=/var/app/current/vendor/bundle/ bundle exec rails c

However, if you need ENV, I recommend doing this as per AWS doc: https://aws.amazon.com/premiumsupport/knowledge-center/elastic-beanstalk-env-variables-linux2/

tl;dr

On Amazon Linux 2, all environment properties are centralised into a single file called /opt/elasticbeanstalk/deployment/env. No user can access these outside the app. So, they recommend to add some hook scripts after deploy to basically create a copy.

#!/bin/bash

#Create a copy of the environment variable file.
cp /opt/elasticbeanstalk/deployment/env /opt/elasticbeanstalk/deployment/custom_env_var

#Set permissions to the custom_env_var file so this file can be accessed by any user on the instance. You can restrict permissions as per your requirements.
chmod 644 /opt/elasticbeanstalk/deployment/custom_env_var

#Remove duplicate files upon deployment.
rm -f /opt/elasticbeanstalk/deployment/*.bak

If because of some reason you don't want to run as root, do the following to pass env vars from root into new user environment:

sudo -u <user> -E env "PATH=$PATH" bash -c 'cd /var/app/current/ && <wtv you want to run>'
于 2021-02-16T16:35:09.570 に答える
1

最新の ruby​​ バージョンについては、次のコマンドを使用してください。

BUNDLE_PATH=/opt/rubies/ruby-2.6.3/lib/ruby/gems/2.6.0/ bundle exec rails c production

sudo で実行する必要はありません。

于 2020-05-31T21:39:44.887 に答える
-2

Gemfile :p のあるフォルダーを見つける必要があります。

そのためには、Web サーバーの構成を調べて、アプリのディレクトリがどこにあるかを示す構成が必要です。

アプリがどこにあるか知っているかもしれません。

しかし、わからない場合は、次のことを試してみます。

grep -i your_app_name /etc/apache/*
grep -i your_app_name /etc/apache/sites-enabled/*

Apache config で your_app_name を含むファイルを検索します。

または、nginx を使用している場合は、apache上記をに置き換えますnginx

アプリケーションフォルダーを見つけたら、そこにcdして実行しますRAILS_ENV=production bundle exec rails c

アプリケーションが Apache または nginx 構成で本番環境で実行されるように構成されていることを確認します。

于 2013-10-27T17:21:07.877 に答える