如何在Amazon ec2上运行seed.rb文件

时间:2013-06-21 09:23:58

标签: ruby-on-rails ruby-on-rails-3 amazon-web-services amazon-ec2 elastic-beanstalk

最近我使用Elastic Beanstalk在Amazon EC2上托管了我的Ruby on Rails应用程序。一切正常,除了我的seeds.rb文件。我的seeds.rb文件在托管时没有执行。我也在使用ActiveAdmin,我在我的seeds.rb文件中定义了第一个admin。

如何通过rails控制台在Amazon上创建第一个管理员用户? 有没有办法在Amazon EC2上打开Rails控制台? 我试图用putty做这个,但不知道怎么做。请给我一些指示..

3 个答案:

答案 0 :(得分:8)

你不应该这样做吗?

# .ebextensions/bundles_container.config
container_commands:
  01-bundle-install:
    command: "bundle install"
    leader_only: true
  02-bundle-db-migrate:
    command: "bundle exec rake db:migrate"
    leader_only: true
  03-bundle-db-seed:
    command: "bundle exec rake db:seed RAILS_ENV='staging'"
    leader_only: true

您也可以根据需要传递参数,或将所有这些命令与“cmd1&& cmd2”结合使用。

答案 1 :(得分:3)

您需要创建密钥对才能访问亚马逊实例(我认为您已经拥有)。确保在当前选定的安全组中启用了ssh访问。

您可以使用

连接到亚马逊实例

ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com

然后cd进入app目录并运行bundle exec rake db:seed RAILS_ENV='staging',假设您在暂存环境中运行应用程序。

答案 2 :(得分:1)

如果您在这里并且上述解决方案对您不起作用。

除了使用Benchwarmer上面的答案中提供的命令之外:

https://stackoverflow.com/a/17232607/1216245

我必须运行seed命令,为主键和所有rds设置提供env vars。

bundle exec rake db:seed RAILS_ENV=production RAILS_MASTER_KEY=<your master key> RDS_HOSTNAME=<your rds hostname> RDS_PASSWORD=<...> RDS_USERNAME=<...> RDS_DB_NAME=<...> RDS_PORT=<...>

终于奏效了:)

您可以在AWS控制台(仪表板)中的环境中的“配置”面板中检查所有这一切。