rails4 getting started - herokaijp/devcenter GitHub Wiki
Ruby on Railsã¯ãRubyã§æžãããããã¥ã©ãŒãªãã¬ãŒã ã¯ãŒã¯ã§ããRails 4.0ã®ããŒã¿çãã2013幎1æ25æ¥ã«ãªãªãŒã¹ãããŸããã以åã®ããŒãžã§ã³ã®RailsãHerokuäžã§ã䜿ãã«ãªãå Žåã¯ãGetting Started with Rails 3.x on Herokuãåç §ããŠäžããã
ãã®èšäºã¯ãRails 4ã䜿ãå§ããã«èŸºããæ·±ãæãäžããèšäºãšãªããŸããæ¢ã«ãHerokuãšRailsã«æ £ã芪ããã§ããå Žåã¯ãã·ã³ãã«ãªRails 4ã®Herokuã¬ã€ããåç §ããŠäžããã
Rails 4ãHerokuäžã§åäœãããã«ã¯ã以äžã®ãã®ãå¿ èŠãšãªããŸãã:
- åºæ¬çãªRuby/Railsã®ç¥èãRuby 1.9.3以éãRubygemsãBundlerãRails 4ãã€ã³ã¹ããŒã«æžã¿ã§ããããšã
- åºæ¬çãªGitã®ç¥è
- Herokuã®ãŠãŒã¶ãŒã¢ã«ãŠã³ãããµã€ã³ã¢ããã¯ãããªãŒããã€ç°¡åã«è¡ããŸãã
ãŸãã¯ãããŒã«ã«ç«¯æ«ã«Heroku Toolbeltãã€ã³ã¹ããŒã«ããŠäžãããã€ã³ã¹ããŒã«ããããšã§ãHerokuã®CLIãForemanãGitã®ãªããžã§ã³ç®¡çã·ã¹ãã ãžã®ã¢ã¯ã»ã¹ãå¯èœãšãªããŸãããŸããRubyãšRailsãã€ã³ã¹ããŒã«ãããŠããå¿ èŠããããŸãã
äžåºŠãã€ã³ã¹ããŒã«ãããŠããŸãã°ãã·ã§ã«ããheroku
ã³ãã³ããå®è¡åºæ¥ãããã«ãªããŸããHerokuã®ã¢ã«ãŠã³ãäœææã«äœ¿çšããemailã¢ãã¬ã¹ãšãã¹ã¯ãŒãã䜿ãã以äžã®ããã«ãã°ã€ã³ããŠäžããã:
:::term
$ heroku login
Enter your Heroku credentials.
Email: [email protected]
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /Users/adam/.ssh/id_rsa.pub
æ¢åã®ssh
ããŒãã¢ããããŒãããããæ°ãã«ssh
ããŒãäœæããŸãã®ã§ããšã³ã¿ãŒãæŒäžããŠäžãããssh
ããŒã¯ããã®å
ãã³ãŒããHerokuã«ããã·ã¥ããéã«äœ¿çšãããŸãã
æ¢åã®ã¢ããªããäœæ¥ãå§ããããšãããã§ãããããã®å ŽåããŸãã¯ãRails 4ãžã®ã¢ããã°ã¬ãŒãããé¡ãããŸããããã§ãªãå Žåãäžè¬çãªRails 4ã®ã¢ããªããµã³ãã«ãšããŠã¯æé©ã§ãããã以äžã®ããã«äœæ¥ãé²ããŸããæ°èŠã®ã¢ããªãäœæããåã«ã$ rails -v
ã³ãã³ããå®è¡ããéçºæã«Rails 4.xã䜿çšããŠããããšã確èªããŠäžããããŸããRailsã®æ°ããŒãžã§ã³ãå
¥æããã«ã¯äžèšã®ã³ãã³ããå®è¡ããŸãã
:::term
$ gem install rails --version 4.0.0
ãã®åŸã§ãæ°èŠã¢ããªãäœæããŠã¿ãŸãããã:
:::term
$ rails new myapp --database=postgresql
$ cd myapp
Herokuã®çµ±åç°å¢ã¯ã以åãRailsã®ãã©ã°ã€ã³ã䜿çšããããšã«äŸåããŠããŸããããRails 4ã§ã¯ããããã®äŸåé¢ä¿ãåé€ããŸãããéçãªã¢ã»ãããHerokuäžã«æäŸããããšããã°ãåãæ©èœã䜿çšå¯èœã«ããã«ã¯ã以äžã®gemãGemfile
ãžè¿œå ããŠäžããã:
:::ruby
gem 'rails_12factor', group: :production
ãã®åŸã§ãäžèšãå®è¡ããŠäžããã:
:::term
$ bundle install
ãããŸã§ããHerokuãšçµ±åããéã®å¿ èŠæå°éã®äœæ¥ãšãªããŸãã
ã¢ããªäœææã--database=postgresql
ã®ãã©ã¡ãŒã¿ãæå®ããpostgresql
ã®äœ¿çšãæç€ºããŠããªãã®ã§ããã°ãpg
ãšããgemãRailsãããžã§ã¯ãã«è¿œå ããå¿
èŠããããŸããGemfile
å
ã®è©²åœç®æãäžèšã®ããã«å€æŽããŠäžããã:
:::ruby
gem 'sqlite3'
äžèšç®æããã¡ãã«å€æŽããŸãã:
:::ruby
gem 'pg'
äŸåããŠããgemã®åã€ã³ã¹ããŒã«ãããŠäžãããïŒæ°èŠã®Gemfile.lock
ãçæããããã§ããïŒ:
:::term
$ bundle install
ãªããã®å€æŽãå¿ èŠãããŸããpostgresãããŒã«ã«ç°å¢ã§å®è¡ãããã¢ããªã®èšå®æ¹æ³ã«é¢ããŠã¯ãããå€ãã®æ å ±ãåŸãããšãå¯èœã§ãããã¡ããåç §ããŠäžãããHerokuã§Sqlite3ã䜿çšåºæ¥ãªãçç±
Rails 4ã§ã¯ãRuby 1.9.3ããŸãã¯ãã以éã®Rubyãå¿
èŠãšããŸããHerokuã¯ãçŽè¿ã®ããŒãžã§ã³ã®Rubyãã€ã³ã¹ããŒã«ããŸãããGemfile
ã«ä»¥äžã®ããã«è¿œèšããããšã§ãããŒãžã§ã³ãæç€ºããããšãå¯èœã§ãã:
:::ruby
ruby "1.9.3"
ãŸãã¯ã
:::ruby
ruby "2.0.0"
ããŒã«ã«ã§ããåäžã®ããŒãžã§ã³ã®Rubyã䜿ãã¹ãã§ãã$ ruby -v
ã³ãã³ããå®è¡ããããšã§ãã©ã®ããŒãžã§ã³ã䜿ã£ãŠãããã確èªããããšãåºæ¥ãŸããããè©³çŽ°ãªæ
å ±ã¯ãã¡ãHerokuã§äœ¿çšããRubyã®ããŒãžã§ã³ãæç€ºãããåç
§ããŠäžããã
Herokuã¯ããããžã§ã¯ãã®ãããã€ãããéãgitã®ã·ã¹ãã ã«äŸåããŠããŸããgitãšã¯ã忣åããŒãžã§ã³ç®¡çã·ã¹ãã ã®ããšã§ãããããžã§ã¯ããæªã gitã«ä¿åãããŠããªãå ŽåããŸãã¯ãã·ã¹ãã å
ã«git
ãã€ã³ã¹ããŒã«ãããŠãããã確èªããŠäžããã
:::term
$ git --help
usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
[-c name=value] [--help]
<command> [<args>]
# ...
äžèšã®ã³ãã³ããå®è¡ããŠããã¢ãŠãããããåŸãããªãå Žåããcommand not found
ã®ãšã©ãŒãè¿ã£ãŠããå Žåãgitãã·ã¹ãã å
ã«ã€ã³ã¹ããŒã«ããå¿
èŠããããŸããHeroku toolbeltãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŠäžããã
gitãæ©èœããŠããããšãåããã°ã次ã«Railsã¢ããªã®ãã£ã¬ã¯ããªã«ç§»åããŠäžããããã®åŸã§ãRailsã¢ããªã®ãã£ã¬ã¯ããªã§ãäžèšã®3ã€ã®ã³ãã³ããå®è¡ããŠäžããããã®ã³ãã³ãã¯ãgitã®åæåãšã³ãŒããgitãžã³ãããããããã®ãã®ã§ãã:
:::term
$ git init
$ git add .
$ git commit -m "init"
ããŠãããªãã®ã¢ããªã±ãŒã·ã§ã³ãgitãžã³ããããããŸãããããã§ãHerokuãžã®ãããã€ãå¯èœãšãªããŸãã
Railsã¢ããªãæ ŒçŽãããŠãããã£ã¬ã¯ããªã«ããããšã確èªããŠäžããããã®åŸã§ãHerokuãžã¢ããªãã¯ãªãšã€ãããŸãã:
:::term
$ heroku create
Creating calm-brook-1268... done, stack is cedar
http://calm-brook-1268.herokuapp.com/ | [email protected]:calm-brook-1268.git
Git remote heroku added
äžèšã®ã³ãã³ããå®è¡ããããšã§ããããžã§ã¯ãããªã¢ãŒãã«è¿œå ãããããšã確èªããŠäžããã
:::term
$ git config -e
fatal: not in a git directory
ãšãããšã©ãŒãåºãªããã°ãHerokuãžã®ãããã€ãå®å
šã«è¡ããç¶æ
ã§ãããããã€åŸãããŒã¿ããŒã¹ã®ãã€ã°ã¬ãŒããå¿
èŠãšãªããŸããé©åã«ã¹ã±ãŒã«ãããŠããããšã確èªããŠäžããããŸããä»åŸçºçãåŸãåé¡ãããã°ããã«ã¯ããã°ã䜿çšããŠäžããã
ã³ãŒãã®ãããã€:
:::term
$ git push heroku master
Counting objects: 112, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (77/77), done.
Writing objects: 100% (112/112), 27.01 KiB, done.
Total 112 (delta 20), reused 112 (delta 20)
-----> Ruby/Rails app detected
-----> Using Ruby version: ruby-2.0.0
-----> Installing dependencies using Bundler version 1.3.0.pre.5
Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Fetching git://github.com/heroku/rails3_serve_static_assets.git
Fetching git://github.com/heroku/rails_log_stdout.git
Installing rake (10.0.3)
Installing i18n (0.6.2)
Installing minitest (4.6.1)
Installing multi_json (1.6.1)
Installing atomic (1.0.1)
Installing thread_safe (0.1.0)
Installing tzinfo (0.3.35)
Installing activesupport (4.0.0)
Installing builder (3.1.4)
Installing erubis (2.7.0)
Installing rack (1.5.2)
Installing rack-test (0.6.2)
Installing actionpack (4.0.0)
Installing mime-types (1.21)
Installing polyglot (0.3.3)
Installing treetop (1.4.12)
Installing mail (2.5.3)
Installing actionmailer (4.0.0)
Installing activemodel (4.0.0)
Installing activerecord-deprecated_finders (0.0.3)
Installing arel (4.0.0)
Installing activerecord (4.0.0)
Installing coffee-script-source (1.5.0)
Installing execjs (1.4.0)
Installing coffee-script (2.2.0)
Using json (1.7.7)
Installing rdoc (3.12.2)
Installing thor (0.17.0)
Installing railties (4.0.0)
Installing coffee-rails (4.0.0)
Installing hike (1.2.1)
Installing jbuilder (1.0.2)
Installing jquery-rails (2.2.1)
Installing pg (0.14.1)
Using bundler (1.3.0)
Installing tilt (1.3.3)
Installing sprockets (2.9.0)
Installing sprockets-rails (2.0.0.rc3)
Installing rails (4.0.0)
Using rails3_serve_static_assets (0.0.1) from git://github.com/heroku/rails3_serve_static_assets.git (at master)
Using rails_log_stdout (0.0.1) from git://github.com/heroku/rails_log_stdout.git (at master)
Installing sass (3.2.6)
Installing sass-rails (4.0.0)
Installing turbolinks (1.0.0)
Installing uglifier (1.3.0)
Your bundle is complete! It was installed into ./vendor/bundle
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:
<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data --install
= 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
Cleaning up the bundler cache.
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
I, [2013-02-25T15:15:26.999810 #1771] INFO -- : Writing /tmp/build_8twtg5uo0zrj/public/assets/rails-a48208150b2c0da4f80797a999919b58.png
I, [2013-02-25T15:15:29.993217 #1771] INFO -- : Writing /tmp/build_8twtg5uo0zrj/public/assets/application-e4bf17ac068b4157db532671a5294743.js
I, [2013-02-25T15:15:30.065780 #1771] INFO -- : Writing /tmp/build_8twtg5uo0zrj/public/assets/application-a543268ce31a2798b68675fbfcb1bcdc.css
Asset precompilation completed (6.24s)
-----> Rails plugin injection
-----> Discovering process types
Procfile declares types -> (none)
Default types for Ruby/Rails -> console, rake, web, worker
-----> Compiled slug size: 33.1MB
-----> Launching... done, v6
http://calm-brook-1268.herokuapp.com deployed to Heroku
To [email protected]:calm-brook-1268.git
* [new branch] master -> master
泚æïŒRails 4ã§ã¯ãæ¬çªç°å¢ã«éçã€ã³ããã¯ã¹ã®ããŒãžã管çããªããªããŸãããæ°èŠã®ã¢ããªãäœæããå Žåãã«ãŒããšãªãããŒãžã¯ååšããªãããšãšãªãã§ãããã
ã¢ããªã±ãŒã·ã§ã³ã«ããŒã¿ããŒã¹ãã䜿ãã§ããããäžèšã®ã³ãã³ããå®è¡ããããšã§ãæåã§ããŒã¿ããŒã¹ããã€ã°ã¬ãŒãããå¿ èŠããããŸãã:
:::term
$ heroku run rake db:migrate
heroku run
ã®åŸã«ä»å ãããã³ãã³ãã¯å
šãŠHerokuã®dynoäžã§å®è¡ãããŸãã
Herokuãžã®ã³ãŒãã®ãããã€ã¯å®äºããŸããã®ã§ãHerokuãžããã»ã¹ã¿ã€ããå®è¡ããããæç€ºãéãããšãåºæ¥ãŸããHerokuã§ã¯ãdynoäžã§é¢é£ããã³ãã³ããå®è¡ããããšã«ããããããå®çŸããŠããŸããdynoãšã¯ãHerokuã®æ§æã«ãããåºæ¬åäœã®ããšã§ã軜éãªã³ã³ãããšãªããŸãã
web
ããã»ã¹ã¿ã€ããšããŠã1dynoãå®è¡äžã§ããããšã確èªããŠã¿ãŸãããã:
:::term
$ heroku ps:scale web=1
ã¢ããªã®dynoã®ç¶æ
ã確èªããããšãå¯èœã§ããheroku ps
ã³ãã³ãã¯ãã¢ããªã±ãŒã·ã§ã³ã§å®è¡ãããŠããdynoããªã¹ãåããŸãã:
:::term
$ heroku ps
=== web: `rails server -p $PORT -e $RAILS_ENV`
web.1: up for 5s
1dynoãå®è¡ãããŠããããšã確èªããŸããã
heroku open
ãå®è¡ããããšã§ããã©ãŠã¶äžã§ã¢ããªã蚪åããããšãå¯èœã§ãã
:::term
$ heroku open
Opening calm-brook-1268... done
éçºäžãHerokuã¯ããã©ã«ãã§ã¢ããªåãæäŸããŠãããŸããã¢ããªãã¹ã±ãŒã«ããæºåãæŽããæ¬çªç°å¢ã§Herokuã䜿çšããéãã«ã¹ã¿ã ãã¡ã€ã³ãåç§°ãšããŠè¿œå ããããšãå¯èœã§ãã
ã¢ããªãæ£åžžã«åäœããããéçºãè¡ã£ãŠããéãäœãããã®åé¡ã«ééãããªãããŸãã¯ããã°ã確èªããå¿ èŠããããŸãã
Herokuã§ã¯ãæç³»åã®ã€ãã³ãã®ã¹ããªãŒã ãšããŠãã°ãæ±ããŸãããã°ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããŒãã³ããå®è¡ããå šdynoããåéãããŸããHerokuã®Logplexã¯ããããã®å šã€ãã³ããžã®ãã£ã³ãã«ãšãªããŸãã
皌åäžã®ã¢ããªã®æ
å ±ãåç
§ããã«ã¯ãheroku logs
ãšãããã°çšã³ãã³ããå®è¡ããããšã§å¯èœãšãªããŸãã:
:::term
$ heroku logs
2013-02-26T01:47:32+00:00 heroku[web.1]: State changed from created to starting
2013-02-26T01:47:33+00:00 heroku[web.1]: Starting process with command `rails server -p 16142 -e $RAILS_ENV`
2013-02-26T01:47:35+00:00 app[web.1]: [2013-02-26 01:47:35] INFO WEBrick 1.3.1
2013-02-26T01:47:35+00:00 app[web.1]: [2013-02-26 01:47:35] INFO WEBrick::HTTPServer#start: pid=2 port=16142
2013-02-26T01:47:35+00:00 app[web.1]: [2013-02-26 01:47:35] INFO ruby 2.0.0 (2013-02-24) [x86_64-linux]
2013-02-26T01:47:36+00:00 heroku[web.1]: State changed from starting to up
以äžã®ããã«--tail
ãã©ã°ãã³ãã³ãã«ä»å ããããšã§ãå
šã¹ããªãŒã ã®ãã°ãååŸããããšãå¯èœã§ãã:
:::term
$ heroku logs --tail
web dynoã1ã€ã ã䜿çšããŠããã¢ããªã§ã¯ã1æéã¢ã€ãã«ç¶æ ãç¶ããå Žåãdynoãã¹ãªãŒãç¶æ ãšãªããŸãããã®ããšã¯ãã¹ãªãŒãç¶æ ãšãªã£ãŠããæåã®ãªã¯ãšã¹ããåãä»ããéã«ãã¢ããªã®èµ·åãé ããªãåå ãšãªããŸããç¶ç¶çã«ãªã¯ãšã¹ããçºçããå Žåã¯ãé å»¶ãªãéåžžéãåäœããŸãã
ãããé¿ããããã«ãäžèšã®äŸã®ããã«ãweb dynoã1ã€ä»¥äžã«ã¹ã±ãŒã«ããããšãå¯èœã§ãã:
:::term
$ heroku ps:scale web=2
Herokuã¯ãã¢ããªæ¯ã«750æéããªãŒã®dynoãæäŸããŠããŸãã2ã€ã®dynoã§ã¢ããªãå®è¡ããŠããå Žåã¯ããã®å¶éãè¶ããŠããŸãã§ãããããã®ããã以äžã®ããã«ã¹ã±ãŒã«ãå ã«æ»ããŸãããã:
:::term
$ heroku ps:scale web=1
Herokuã¯ãheroku run
ã³ãã³ãã䜿çšããããšã§ãone-off dynoã®ä»çµã¿å
ã«ãããŠãã³ãã³ãã®å®è¡ãèš±å¯ããŠããŸããone-off dynoãšã¯ãå¿
èŠãªæã«ã®ã¿å®è¡ãããã¹ã¯ãªãããšã¢ããªã±ãŒã·ã§ã³ã®ããšã§ãããã®one-off dynoãRailsã®ã³ã³ãœãŒã«ããã»ã¹ãèµ·åãããã®ã«äœ¿ã£ãŠã¿ãŠäžãããå®éã®ã¢ããªã®ç°å¢ã§è©Šéšããããšãå¯èœã§ãã:
:::term
$ heroku run rails console
Running `rails console` attached to terminal... up, run.2591
Loading production environment (Rails 4.0.0)
irb(main):001:0>
Rakeã¯ã³ã³ãœãŒã«ãšåæ§ã«ä»å ããã»ã¹ãšããŠå®è¡ããããšãåºæ¥ãŸããïŒ
:::term
$ heroku run rake db:migrate
ããã©ã«ãã§ãrails server
ã³ãã³ãã§äœ¿çšãããWebãµãŒããŒã¯ãWebrickãšãªããŸããããã¯ãã¹ãç°å¢ã§ã¯è¯ããããããŸãããã§ãããæ¬çªç°å¢ã§ã¯ãã£ãšå
ç¢ãªWebãµãŒããŒãžåãæ¿ããããªããããããŸãããCedaräžã§ã¯ãUnicornãWebãµãŒããŒãšããŠäœ¿çšããããšãæšå¥šããŸããããªããéžæããWebãµãŒããŒãã©ãã§ãããæ¬çªç°å¢ã®ã¢ããªã§ã¯ãåžžã«Procfile
ãžãã¯ã£ãããšäœ¿çšããWebãµãŒããŒãæç€ºããã¹ãã§ãã
ãŸãæåã«ãã¢ããªã®Gemfile
ãžUnicornã远å ããŠäžããã:
gem 'unicorn'
$ bundle install
ãå®è¡ããŠäžãããå®è¡ããããšã§ãUnicornã䜿çšãããããã¢ããªãèšå®ããæºåãæŽããŸãã
config/unicorn.rb
ã«Unicornçšã®èšå®ãã¡ã€ã«ãäœæããŠäžããã:
$ touch config/unicorn.rb
çŸåšãHerokuã§ã¯Unicornã«é¢ãã詳现ãªèšå®ãªãã·ã§ã³ã远å äžã§ãã詳现ã¯ãHerokuã®Unicornã«é¢ããããã¥ã¡ã³ãã«èšèŒããŠããŸãã:
# config/unicorn.rb
worker_processes 3
timeout 30
preload_app true
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT'
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end
ãã®ããã©ã«ãèšå®ã¯ãActive Recordã䜿çšããã¹ã¿ã³ããŒããªRailsã¢ããªã§äœ¿ãããããšãåæãšããŠããŸãããªãã£ã·ã£ã«ã®Unicornã«é¢ããããã¥ã¡ã³ãã«ããç°ãªããªãã·ã§ã³ã«é¢ããŠãã粟éããŠããã¹ãã§ãããã
æåŸã«ãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒããã£ã¬ã¯ããªäžã«Procfile
ãäœæããããšã§ãããªãã®Railsã¢ããªãã©ã®ããã«åäœããããHerokuãžäŒããå¿
èŠããããŸãã
Procfileãšãããã¡ã€ã«ãäœæããããšã§ãwebããã»ã¹ãèµ·åããã®ã«äœ¿çšãããã³ãã³ããäžèšã®ããã«å€æŽããŠäžããã:
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
泚æ: Procfile
ãšããåç§°ã¯ç¹çްã§ããåç§°ã®1æåç®ã¯å¿
ã倧æåã«ããŠäžããã
Foremanã䜿ã£ãŠãProcfileãããŒã«ã«ç°å¢ã§ãã¹ãããŠã¿ãŸãããã:
:::term
$ foreman start
18:24:56 web.1 | I, [2013-03-13T18:24:56.885046 #18793] INFO -- : listening on addr=0.0.0.0:5000 fd=7
18:24:56 web.1 | I, [2013-03-13T18:24:56.885140 #18793] INFO -- : worker=0 spawning...
18:24:56 web.1 | I, [2013-03-13T18:24:56.885680 #18793] INFO -- : master process ready
18:24:56 web.1 | I, [2013-03-13T18:24:56.886145 #18795] INFO -- : worker=0 spawned pid=18795
18:24:56 web.1 | I, [2013-03-13T18:24:56.886272 #18795] INFO -- : Refreshing Gem list
18:24:57 web.1 | I, [2013-03-13T18:24:57.647574 #18795] INFO -- : worker=0 ready
åé¡ãç¡ãããã§ããCtrl-CãæŒããForemanãçµäºãããŠäžããã倿Žç®æãHerokuãžãããã€ããŠäžããã:
:::term
$ git add .
$ git commit -m "use unicorn via procfile"
$ git push heroku
ps
ã³ãã³ããæã£ãŠã¿ãŠäžãããwebããã»ã¹ãUnicornãwebãµãŒããŒãšããŠäœ¿çšããŠããããšã確èªããããšãåºæ¥ãŸãã
:::term
$ heroku ps
Process State Command
------------ ------------------ ------------------------------
web.1 starting for 3s unicorn -p $..
Unicornã䜿çšããŠããããšã¯ããã°ã«ãåæ ãããŸãã:
:::term
$ heroku logs
2013-03-14T01:57:55+00:00 heroku[web.1]: State changed from up to starting
2013-03-14T01:57:59+00:00 heroku[web.1]: Starting process with command `unicorn -p 26253 -E $RACK_ENV`
2013-03-14T01:58:00+00:00 app[web.1]: => Rails 4.0.0 application starting in production on http://0.0.0.0:27993
2013-03-14T01:58:00+00:00 app[web.1]: I, [2013-03-14T01:58:00.253906 #2] INFO -- : listening on addr=0.0.0.0:26253 fd=7
2013-03-14T01:58:00+00:00 app[web.1]: I, [2013-03-14T01:58:00.254256 #2] INFO -- : worker=0 spawning...
2013-03-14T01:58:00+00:00 app[web.1]: I, [2013-03-14T01:58:00.257455 #2] INFO -- : master process ready
2013-03-14T01:58:00+00:00 app[web.1]: I, [2013-03-14T01:58:00.258541 #4] INFO -- : Refreshing Gem list
2013-03-14T01:58:00+00:00 app[web.1]: I, [2013-03-14T01:58:00.258293 #4] INFO -- : worker=0 spawned pid=4
2013-03-14T01:58:01+00:00 app[web.1]: I, [2013-03-14T01:58:01.347337 #4] INFO -- : worker=0 ready
2013-03-14T01:58:01+00:00 heroku[web.1]: State changed from starting to up
Herokuãžãã£ããã€ããéãRailsã®ã¢ã»ãããã€ãã©ã€ã³ã®åŒã³åºãã«ã¯ãããã€ãã®ãªãã·ã§ã³ããããŸãã詳现ã¯ãRails 3.1+ Asset Pipeline on Heroku Cedarãåç §ããŠäžããã
Rails 4ã§ã¯config.assets.initialize_on_precompile
ãªãã·ã§ã³ã¯ãªã ãŒããããå¿
èŠç¡ããªããŸããããŸããã¢ã»ããã®ã³ã³ãã€ã«æã®ãšã©ãŒã¯ãããã·ã¥æã®ãšã©ãŒã®åå ãšããªããŸãã
ã¢ããªãããã·ã¥æã«ãã¯ã©ãã·ã¥ïŒheroku ps
ã³ãã³ããcrashed
ãšããã¹ããŒããè¿ããŸãïŒããå Žåã¯ãäœãåé¡ã§ãã£ããããã°ã§ç¢ºèªããŠäžãããäžè¬çãªåé¡ãããã€ãã玹ä»ããŸãã
ãã£ããã€æã«gemãèŠã€ãããªãç¶æ ãšãªã£ãŠããã®ã§ããã°ãBundlerã®ã°ã«ãŒãã確èªããŠã¿ãŠäžãããHerokuã§ã¯ãéçºç°å¢ããã¹ãç°å¢ã®ã°ã«ãŒããç¡èŠããŠãã¢ããªãæ§ç¯ããŸããããªãã®ã¢ããªãããããã®ã°ã«ãŒãã®gemã«äŸåããŠããã®ã§ããã°ããã®gemããããã®ã°ã«ãŒãã®å€ã«èšè¿°ããŠã¿ãŠäžããã
Rakefile
å
ã®RSpecã¿ã¹ã¯ã䜿ã£ãäžè¬çãªäŸãæããŠã¿ãŸããHerokuãžã®ãã£ããã€æã«äžèšã®ãšã©ãŒãèŠãããšããããªã:
:::term
$ heroku run rake -T
Running `bundle exec rake -T` attached to terminal... up, ps.3
rake aborted!
no such file to load -- rspec/core/rake_task
次ã«ãã®åé¡ã«ãééããã§ããããæåã«ã以äžã®ããã«ããŒã«ã«ã§ãåæ§ã®çŸè±¡ãçºçãããŠäžããã:
:::term
$ bundle install --without development:test
âŠ
$ bundle exec rake -T
rake aborted!
no such file to load -- rspec/core/rake_task
gemããŒãæã«ããããã®Rakeã¿ã¹ã¯ãæ¡ä»¶ä»ãã«ããããšã§ããã®åé¡ããã£ãã¯ã¹åºæ¥ãŸããäŸãã°ä»¥äžã®ãããªæãã§ãã:
:::ruby
begin
require "rspec/core/rake_task"
desc "Run all examples"
RSpec::Core::RakeTask.new(:spec) do |t|
t.rspec_opts = %w[--color]
t.pattern = 'spec/*_spec.rb'
end
rescue LoadError
end
ããŒã«ã«ã§åäœããããšã確èªããäžã§ãHerokuãžããã·ã¥ããŠäžããã