簡體   English   中英

如何在Cloud9上使用Rails Composer和postgreSQL並在Heroku上部署

[英]How to use Rails Composer and postgreSQL on Cloud9 and deploy on Heroku

使用Rails ComposerCloud9上使用postgreSQL創建rails應用程序並在Heroku上部署的過程充滿了警告和錯誤,這可能會讓新開發人員感到困惑。 是否有任何說明可以幫助我完成整個過程並部署我的入門應用程序?

我相信rails composer,cloud9和heroku以及后者推薦的postgreSQL數據庫,盡管它們一起使用它們有很多細節,沒有任何一個來源澄清如何繞過。 在花了很多夜的時間之后,我創建了以下列出的說明,這些說明在發布日期和時間之后有效。

  • 在cloud9上創建一個新工作區
  • 在工作區上設置postgreSQL數據庫:

    $ sudo service postgresql start

    $ sudo sudo -u postgres psql

    postgres = #CREATE USER username 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

接下來,設計要求將超長密鑰設置為環境變量。 一旦創建了rails應用程序,rake就可以使用cl上的$ rake secret命令生成這樣的密鑰。 由於我們還沒有使用composer來生成我們的rails應用程序,因此rake不起作用。 不過,我們將使用irb和securerandom做同樣的事情,正如James Badger在他的博客文章“ 為Rails應用程序生成一個新的秘密令牌

$ 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處的新app目錄:

$ 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

連續測試:1 - 無

前端框架:2 - bootstrap 3.3

電子郵件支持:1 - 無

身份驗證:2 - 設計

設計模塊:1 - 設計默認模塊

授權:1 - 無

表單生成器gem:2 - simpleform

添加頁面:5 - 主頁,關於和用戶

添加Bootstrap頁面模板? [您可以在startbootstrap.com模板網頁上查看選項。]

設置本地?:[返回/沒有英語]

網頁瀏覽分析:2 - Google Analytics

在谷歌上生成谷歌分析ID並輸入。

准備部署:2 - heroku

禁用Rails Turbolinks?:n

禁蜘蛛

創建github存儲庫:n - 我打算使用bitbucket

為環境變量添加gem和文件?:1

在開發過程中減少資產記錄器噪音:y

在開發過程中使用'better_errors'改進錯誤報告? ÿ

在開發和測試期間使用'pry'作為控制台替換:y

使用'rubocop'來確保您的代碼符合Ruby Style指南? ÿ

創建一個特定於項目的rvm gemset? ÿ

添加'therubyracer'? ñ

[創建應用!]

PostgreSQL的用戶名(留空以使用應用程序名稱)用戶名#給定我在上面輸入的內容以創建本地pg數據庫

在database.yml中托管PostgreSQL? (留空以使用默認套接字連接)留空

密碼#也給出了我上面輸入的內容來創建本地pg數據庫

可以刪除所有名為[您的應用名稱]的現有數據庫嗎? ÿ

在git上提交最終更改由於某種原因,Rails Composer似乎跳過了一個最終提交...執行以下操作:

$ git add .

$ git commit -am “Final rails_composer commit”

按照bitbucket上的指示為現有項目創建新的存儲庫,並從命令行推送到它

按照heroku上的“入門指南”說明 ,其中包括以下內容:

$ 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不同的SECRET_KEY_BASE。

現在您可以遷移heroku數據庫:

$ heroku run rake db:migrate

創建一個Procfile

$ touch Procfile

[Procfile]

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

$ touch config/puma.rb

[配置/ 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

我希望這些說明很有用。 請隨意添加並改進它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM