【问题标题】:How to use Rails Composer and postgreSQL on Cloud9 and deploy on Heroku如何在 Cloud9 上使用 Rails Composer 和 postgreSQL 并在 Heroku 上部署
【发布时间】:2016-02-17 01:25:48
【问题描述】:

使用Rails ComposerCloud9 上使用postgreSQL 创建rails 应用程序并在Heroku 上进行部署的过程充满了警告和错误,可能会让新开发人员感到困惑。是否有任何说明可以帮助我完成整个流程并部署我的入门应用?

【问题讨论】:

    标签: postgresql ruby-on-rails-4 heroku cloud9-ide rails-composer


    【解决方案1】:

    我相信 rails composer、cloud9 和 heroku 以及后者推荐的 postgreSQL 数据库,尽管将它们一起使用会有很多小细节,没有一个来源能说明如何解决。经过许多晚上的努力,我创建了以下说明列表,这些说明在发布日期和时间有效。

    • 在 cloud9 上创建新工作区
    • 在您的工作区设置一个 postgreSQL 数据库:

      $ sudo service postgresql start

      $ sudo sudo -u postgres psql

      postgres=# CREATE USER 用户名 SUPERUSER PASSWORD 'password';

      创建角色

      postgres=# \q

    选择一个在 heroku 上可用的应用程序的名称,因为它要么是您拥有的应用程序,要么是在 heroku 上仍然可用的应用程序。您可以通过访问 [潜在域名].herokuapp.com 来查看可用性

    $ mkdir ["your app's directory/domain name"]
    
    $ cd ["your app's directory/domain name"]
    

    Rails Composer 使用的当前 gem 使用 ruby​​ 版本 2.2.3,因此必须使用以下代码将其安装在 rvm 中:

    $ rvm install 2.2.3
    
    $ ruby -v
    
    ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
    
    $ rvm use ruby-2.2.3@[your app name] --ruby-version --create
    
    $ gem install rails --no-ri --no-rdoc
    

    创建一些局部变量并将一些值保存到其中。

    $ echo "export USERNAME=username" >> ~/.profile

    $ echo "export PASSWORD=password" >> ~/.profile

    输入您应用的域名作为本地环境变量,并在 cl 中使用以下代码:

    $ echo "export DOMAIN_NAME=[domain name].herokuapp.com" >> ~/.profile

    接下来,devise 要求将超长密钥设置为环境变量。一旦创建了 rails 应用程序,rake 可以使用 cl 上的 $ rake secret 命令生成这样的密钥。由于我们还没有使用 composer 来生成我们的 rails 应用程序,因此 rake 将无法工作。不过,我们将使用 James Badger 在他的博文Generate a New Secret Token for Rails Apps 中描述的 irb 和 securerandom 做同样的事情:

    $ irb
    2.2.3 :001 > require 'securerandom'
    => true 
    2.2.3 :002 > SecureRandom.hex(64)
    => "137d8b4bf436e670e2eea63372494b84aa25900edb1328eb5c1367f5100fe114fc95313f8772428dbda89ed84086e87a26428ef524951f94fd0375d4e399b613"
    2.2.3 :003 > exit
    

    我们(你和我)应该在生产中使用不同的。

    $ echo "export SECRET_KEY_BASE=137d8b4bf436e670e2eea63372494b84aa25900edb1328eb5c1367f5100fe114fc95313f8772428dbda89ed84086e87a26428ef524951f94fd0375d4e399b613" >> ~/.profile

    RESTART TERMINAL 以便设置 ENV 变量。右键单击终端并选择“重新启动所有终端”将在 cloud9 中完成。重新启动终端可能会将您返回到根目录。如果是这种情况,请使用以下命令切换到 cl 中的新应用目录:

    $ cd [your app directory]
    

    现在你们都准备好了Rails Composer

    $ rails new . -m https://raw.github.com/RailsApps/rails-composer/master/composer.rb
    

    以下是我的 Rails 作曲家选择,尽管您的选择可能会有所不同,但它们可能对您有用。

    构建一个入门应用程序?:3 -- 选择创建自定义 Rails 应用程序

    开发服务器:4 - puma

    生产服务器:1 - 与开发相同

    开发数据库:2 - PostgresSQL

    模板引擎:2 - Haml

    测试环境:2 - rspec with capybara

    持续测试:1 - 无

    前端框架:2 -- bootstrap 3.3

    电子邮件支持:1 -- 无

    身份验证:2 -- 设计

    设计模块:1 -- 使用默认模块设计

    授权:1 -- 无

    form builder gem: 2 -- simpleform

    添加页面:5 -- 主页、关于和用户

    添加引导页面模板? [您可以在startbootstrap.com 模板网页查看选项。]

    set a local?: [return/nothing for English]

    页面浏览分析:2 -- 谷歌分析

    在 google 上生成了一个 google 分析 ID 并将其输入。

    准备部署:2 -- heroku

    禁用 Rails Turbolinks?:n

    禁止蜘蛛:n

    创建 github 存储库:n -- 我打算使用 bitbucket

    为环境变量添加 gem 和文件?:1

    在开发过程中减少资产记录器噪音:是的

    在开发过程中使用“better_errors”改进错误报告?是的

    在开发和测试期间使用“pry”作为控制台替换:y

    使用“rubocop”来确保您的代码符合 Ruby 风格指南?是的

    创建一个特定于项目的 rvm gemset?是的

    添加“therubyracer”? n

    [正在创建应用程序!]

    PostgreSQL 的用户名(留空以使用应用程序名称)用户名 # 给出我在上面输入的内容以创建本地 pg 数据库

    database.yml 中的 PostgreSQL 主机? (留空以使用默认套接字连接)留空

    密码#也给出了我在上面输入的内容来创建本地 pg 数据库

    可以删除所有名为 [您的应用名称] 的现有数据库吗?是的

    在 git 上提交最终更改 由于某种原因,Rails Composer 似乎跳过了最后一个提交...执行以下操作:

    $ git add .
    
    $ git commit -am “Final rails_composer commit”
    

    按照bitbucket 上的指示为现有项目创建新存储库并从命令行推送到它

    按照 heroku 上‘getting started with rails’ 的说明进行操作,其中包括以下内容:

    $ heroku login
    

    在提示符处输入您的 heroku 凭据。

    $ heroku create [your app name (without the herokuapp.com stored as a local variable above)]
    

    使用以下命令验证 Heroku 远程添加:

    $ git config --list | grep heroku
    
    $ git push heroku master
    

    现在您已经在 heroku 上创建了应用程序,您还必须在其中添加一些环境变量,使用以下命令:

    $ heroku config:set DOMAIN_NAME=[your app name].herokuapp.com
    
    $ rake secret    # uses rake to generate a new secret key
    

    5ed8c7d9a3bda9cec3887b61f22aa95bf430a3a550407642b96751c7ef0ce8946a161506d6739da0dcaaea8c8f4f8b3335b1fb549e3cc54f0a4cec554ede05f8

    将新的密钥剪切并粘贴到下面的命令中以设置 Heroku 环境变量。

    $ heroku config:set SECRET_KEY_BASE=5ed8c7d9a3bda9cec3887b61f22aa95bf430a3a550407642b96751c7ef0ce8946a161506d6739da0dcaaea8c8f4f8b3335b1fb549e3cc54f0a4cec554ede05f8
    

    注意:您应该使用$ rake secret 生成与上面代码中包含的不同的 SECRET_KEY_BASE。

    现在您可以迁移 heroku 数据库了:

    $ heroku run rake db:migrate
    

    创建 Procfile

    $ touch Procfile
    

    [过程文件]

    web: bundle exec puma -C config/puma.rb
    
    $ touch config/puma.rb
    

    [config/puma.rb]

    workers Integer(ENV['WEB_CONCURRENCY'] || 2)
    threads_count = Integer(ENV['MAX_THREADS'] || 5)
    threads threads_count, threads_count
    
    preload_app!
    
    rackup      DefaultRackup
    port        ENV['PORT']     || 3000
    environment ENV['RACK_ENV'] || 'development'
    
    on_worker_boot do
      # Worker specific setup for Rails 4.1+
      # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
      ActiveRecord::Base.establish_connection
    end
    

    因为我不希望我的应用获得太多流量并且不能保证它是线程安全的:

    $ heroku config:set MIN_THREADS=1 MAX_THREADS=1
    

    提交该 Procfile 和 puma 配置文件:

    $ git add .
    
    $ git commit -m "Add Procfile and config/puma.rb"
    
    $ git push && git push heroku
    

    我希望这些说明有用。请随时添加并改进它们。

    【讨论】:

      猜你喜欢
      • 2015-03-04
      • 2013-01-08
      • 1970-01-01
      • 2017-11-03
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多