[英]How to use Rails Composer and postgreSQL on Cloud9 and deploy on Heroku
使用Rails Composer在Cloud9上使用postgreSQL創建rails應用程序並在Heroku上部署的過程充滿了警告和錯誤,這可能會讓新開發人員感到困惑。 是否有任何說明可以幫助我完成整個過程並部署我的入門應用程序?
我相信rails composer,cloud9和heroku以及后者推薦的postgreSQL數據庫,盡管它們一起使用它們有很多細節,沒有任何一個來源澄清如何繞過。 在花了很多夜的時間之后,我創建了以下列出的說明,這些說明在發布日期和時間之后有效。
在工作區上設置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.