gemを使う
Rubyに働いてもらう
いよいよ、自分のアプリを公開する日がきました。
出来はともかく、便利に使うために作ったアプリですから、使ってナンボですね。
ただ、アプリを公開するにはサーバーが必要ですが、サーバーの勉強までするのはなかなか大変です。
ここではherokuという初心者にも比較的優しい、サーバーのことを知らなくても何とかなるサービス(お試し程度なら無料!)があるので、それを使いましょう。
確認として、heroku上ではRubyのバージョンがデフォルトで1.9.3のようです。自分の使っているRubyのバージョンがいくつか確認して、あとでカスタムしましょう。
また、バージョン管理システムのgitを使う必要があります。gitのことがよくわからないという方は、こちらのページに最低限必要なことが書いてありますので、参考にしてください。
herokuへリリースする際の手順は以下のとおりです。
たくさんあるようですが、1~4は1度すれば必要ありません。5もPCの設定によっては必要ないこともあります。
ひとつずつ手順を確認していきましょう。
herokuのサイトにアクセスしてSign upしましょう。
アカウントを作るだけでは課金されたりしないので安心してください。
heroku toolbeltのサイトにアクセスして、自分のOSのheroku toolbeltをインストールしましょう。
heroku専用のコマンドを使用するので、必ずインストールしてください。
gitが初めての方も、こちらでgitがインストールされるので便利です。
herokuとのやり取りはsshで通信します。
これに必要な鍵(と呼ばれるファイル)を作成しましょう。
いくつかのやり取りが必要なので、それぞれ入力してください。
パスワード(passphrase)は入力しなくても次に進めますが、よりセキュアにするために設定することをオススメします。
$ ssh-keygen -f ~/鍵ファイルを置くPATH/鍵のファイル名
今作ったsshの公開鍵(拡張子が.pub)をherokuに登録します。
間違ってもここで秘密鍵(拡張子がない)をaddしないでください。
万が一間違ってaddしてしまった場合は、安全のためにssh鍵を作りなおしましょう。
$ heroku keys:add ~/鍵ファイルを置くPATH/鍵のファイル名.pub
herokuにloginするために、自分のPCへssh鍵のPATHを設定しておきます。
これをすると、login時にssh鍵の場所をいちいち書かずに済みます。
$ ssh-add ~/鍵ファイルを置くPATH/鍵のファイル名
このときの鍵ファイル名は秘密鍵のほうです。
もし、ssh-addでエラーになるときは、以下のコマンドでssh-agentというプロセスを起動してみてください。
$ eval `ssh-agent`
herokuにアクセスするために、ターミナルからloginしておきます。
いくつかの質問がありますが、emailとパスワードはherokuアカウントを作成したときのemailとパスワードです。
ssh keyは自分で作成したので”n”を入力してください。
$ heroku login
heroku上のDBは、postgresqlです。他のDBも使えるのですが、課金されたりもしますので、一旦ここはこのままにしておきましょう。
postgresqlを使用するための準備をします。gemが必要なのでGemfileを編集します。
まずは以下の行を追加します。
Gemfile
gem 'pg', group: :production
後ろに:productionとありますが、これはアプリを起動するときのモードのことです。
railsはproduction(本番)モード、development(開発)モード、test(テスト)モードの3つの起動モードがあります。
heroku上にアプリを乗せると、自動的にproductionモードで起動されるので、そのときだけpostgresqlのgemを使うという意味です。
今、自分のPCで何気なくrails sとコマンドをたたいているときは、developmentモードで動いています。
このときはsqlite3を使用しているので、sqlite3のgemにも細工をしておきます。
(DBの設定は、config/database.ymlに書いてありますので、気になる人は見てみてください。)
gem ‘sqlite3’という行があるはずですので、その後ろに:developmentを追加しましょう。
Gemfile
gem 'sqlite3', group: :development
herokuに限らず、RailsはGemfileではなく、Gemfile.lock(bundle installしたら自動で変更されるgem管理ファイル)を見て必要なgemがインストール・設定されます。忘れずにbundle installしてgitへコミットしておいてください。
$ bundle install
$ git add .
$ git commit -m "change and add gems for heroku."
RubyバージョンもGemfileで指定することができます。例えば、2.1.4を使用する場合は、ファイル内に
ruby "2.1.4"
と記入してgitへコミットしてください。
また、この後にもでてくるAsset Pipelineを有効にするために、
gem 'rails_12factor', group: :production
もGemfileへ追加して、bundle installとgitへのコミットを行ってください。herokuの場合はこれがないと、デザインが反映されません。
heroku以外へデプロイする場合にも必要なことがあるかもしれませんので、ご注意ください。
アプリにアクセスするにはURLが必要ですが、無料版では自分のドメインを使うことはできません。
heroku上のプロジェクト名がURLの一部に使われます。
例えば、プロジェクト名が minamirb だとすると、URLは http://minamirb.herokuapp.comになります。
herokuサイトにログインしてプロジェクトを作る方法もありますが、ターミナルからherokuのプロジェクトを作った方があとがラクなので、
コマンドで作ってしまいましょう。
アプリのディレクトリにcdしてからコマンドを実行してください。
$ cd 自分のアプリのディレクトリ
$ heroku create プロジェクト名
もし、このプロジェクト名が他の人とかぶっていた場合は、その旨メッセージが帰ってくるのでご心配なく。
いよいよ、herokuへアプリを預けるときがきました。
ターミナルからgitでherokuへ渡します。
herokuへ渡す前に、アプリのコードがすべてcommitされているかどうか確認してください。
$ cd 自分のアプリのディレクトリ
$ git push heroku master
実行すると、問題なければターミナル上でherokuがgemのインストールをしたり、
アプリを公開する準備をしてるメッセージがずらーーーーっと流れてきます。
問題がなければ、最後に
http://プロジェクト名.herokuapp.com/ deployed to Heroku
のようなメッセージが帰ってくるので確認しましょう。
herokuへのpushができたら、実はもうアプリのURLは生きています。試しに自分のURLへアクセスしてみてください。
でも、何か変な画面が出てきますよね?DBの準備がまだなんです。RailsはmigrateしないとアプリのDBは出来ませんでしたね。
ということで、heroku上のDBをmigrateしましょう。
$ heroku run rake db:migrate
これでどうでしょう?無事にherokuのURLからアプリが見られましたか?
Rails Guide を参照ください。。。
エラー画面の見方
最初のうちは、エラー画面が出るとそれだけでびっくりして冷や汗ものだと思います。
でも、Railsのエラー画面は親切にいろんなことを教えてくれているので、落ち着いて読んでみましょう。
ここでは、よくあるエラー画面の見方と、よくあるエラーをご紹介します。
よくありがちなエラー
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 License
produced by Minami.rb