Ответ 1
Для рельсов перейдите к /var/app/current
, затем, как сказал @juanpastas, запустите RAILS_ENV=production bundle exec rails c
Я установил RoR environement на эластичный бобовый шлейф AWS. Я могу использовать ssh в моем экземпляре EC2. Мой домашний каталог / home/ec2-user, который фактически пуст. Если я перемещаюсь по каталогу, есть также каталог /home/webapp, к которому у меня нет доступа.
Есть ли способ запустить команду rake или консоль рельсов на моем экземпляре эластичного beanstalk?
Если я наберу консоль рельсов, я получаю Usage: rails new APP_PATH [options]
Если я наберу RAILS_ENV = производственный пакет exec rails console, я получаю "Could not locate Gemfile
"
Для рельсов перейдите к /var/app/current
, затем, как сказал @juanpastas, запустите RAILS_ENV=production bundle exec rails c
Не знаю почему, но так как EBS запускает все как root, это сработало для меня:
sudo su
bundle exec rails c production
Ни одно из упомянутых здесь решений не сработало для меня, поэтому я подготовил небольшой скрипт, который я поместил в script/aws-console.
Вы можете запустить его из каталога /var/app/current от имени root:
eb ssh
cd /var/app/current
sudo script/aws-console
Мой сценарий можно найти здесь как Gist.
Ни один из других ответов не работал у меня, поэтому я пошел искать - теперь это работает для меня на эластичном бобовом стебле. 64-битный амазон 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>
Мне нравится создавать файл eb_console
в корне моего приложения rails, а затем chmod u+x
его. Он содержит следующее:
ssh -t [email protected]_EC2_STATION.compute.amazonaws.com 'cd /var/app/current && bin/rails c'
Таким образом, мне просто нужно запустить:
./eb_console
как я бы запустил heroku run bundle exec rails c
.
Ни один из них не работал у меня, включая aws-console script. Наконец, я закончил создание каталога script
в /var/app/current
, а затем создав в этом каталоге файл rails
в качестве контура этого ответа на другой вопрос SO.
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
И это сработало.
добавить ярлык расширения eb:
# .ebextensions/irb.config
files:
"/home/ec2-user/irb":
mode: "000777"
owner: root
group: root
content: |
sudo su - -c 'cd /var/app/current; bundle exec rails c'
затем:
$ eb ssh
$ ./irb
irb(main):001:0>
Вам нужно найти папку с вашим Gemfile: p.
Чтобы сделать это, я бы посмотрел в вашей конфигурации веб-сервера, там должна быть конфига, которая сообщает вам, где находится ваш каталог приложений.
Возможно, вы знаете, где находится ваше приложение.
Но если вы не знаете, я бы попытался:
grep -i your_app_name /etc/apache/*
grep -i your_app_name /etc/apache/sites-enabled/*
Поиск файлов, содержащих your_app_name в конфигурации Apache.
Или, если вы используете nginx, замените apache
выше на nginx
.
после того, как вы найдете в нем папку приложения, cd и запустите RAILS_ENV=production bundle exec rails c
.
Убедитесь, что ваше приложение настроено на запуск в конфигурации Apache или nginx.