This Project Has Not Released Any Files
railsのホスティングサービス。平たく言えば、railsアプリケーションが動くサーバをインターネット上に無料で用意できる。当然、無料範囲では、いくらかの制限がある。軽くデモりたい程度なら余裕。
プログラムからファイルシステムに書き込みできない。たとえば、投稿された画像を保存できない。書き込みはdbに対してだけ可能。
さっさと作成する。 http://www.heroku.com/
Heroku Toolbelt
https://devcenter.heroku.com/articles/heroku-command
これでHerokuとやり取りするherokuコマンドが使える。
C:\Sites>gem install herokuherokuへのログイン情報を準備する。
C:\Sites>heroku login Enter your Heroku credentials. Email: herokuにサインアップしたメールアドレス Password (typing will be hidden):herokuアカウントのパスワード
参考
heroku側に認証の鍵を作る。
C:\Sites>heroku keys:addこれで普段コンソールから使っている鍵をherokuで使える。
ここではpettantempという名前のサイトをherokuに立ち上げるとする。 このアプリケーションが稼働すれば、http://pettantemp.herokuapp.comというurlで遊べるようになる。
herokuのアプリケーション作成は後でするとして、とりあえず新規プロジェクトを作成する。
C:\Sites\heroku>rails new pettantemp C:\Sites\heroku>cd pettantempこの新規プロジェクトにぺったんRソースファイルを被せて、herokuにぺったんRを構築していく。
herokuコマンドを使ってpettantempという名前のアプリケーションをherokuに作成する。
C:\Sites\heroku\pettantemp>heroku create pettantempherokuのアカウントページから、作成したアプリケーションを確認できるはず。
このアプリケーションにgitでファイルを転送する。 herokuの無料プランでは共同開発ができないので、ローカルから作成してPUSHしていくだけ。
C:\Sites\heroku\pettantemp>git init Initialized empty Git repository in C:/Sites/heroku/pettantemp/.git/
なお、public/index.htmlは削除しておく。
C:\Sites\heroku\pettantemp>heroku git:remote -a pettantemp
参考
ぺったんRをgitからcloneしておく。ただし、このファイルはSourceForgeにつながっているので、手作業でpettantempにコピーする。なお、コピーするとき、.gitディレクトリだけはコピーから除外しておくこと。これまで上書きするとおかしくなる。
コピーをはじめる前にcloneした環境で動作を確認しておいた方が無難。
開発者が混乱しないように環境依存のファイルはgitで扱わないように無視する設定になっているが、heroku本番環境では無視しないように.gitignoreを編集する。
.bundle db/*.sqlite3 db/schema.rb log/*.log tmp/ Gemfile.lock ←削除 .sass-cache/ public/image/* config/aws.yaml ←削除 config/picture_io.yml ←削除 config/license.yml ←削除 config/test_layout ←削除 lib/test/temp/ db/migrate/*_creative_commons_v??_licenses_attributes.rb ←削除 db/migrate/*_pettan_commons_v??_licenses_attributes.rb ←削除 db/migrate/*_pettan_protected_v??_licenses_attributes.rb ←削除 db/migrate/*_pettan_public_v??_licenses_attributes.rb ←削除 db/migrate/*_public_domain_v??_licenses_attributes.rb ←削除 db/migrate/*_unknown_v??_licenses_attributes.rb ←削除ライセンスのmigrateファイルはgitでherokuに転送してやらないと反応してくれないらしい。さらに必要ならconfig/test_layoutか。 これらを無視しないように削除しておく。もちろん各ファイルは用意しておくこと。
ライセンスengineが利用するテーブルを作成するスクリプトを作成する作業(rake licenses:install)はローカルで実行してからgitにaddする。
C:\Sites\heroku\pettantemp>rake licenses:install
AWSとのやりとりはaws-s3というgemで実現しているのだが、これの本家がrails 4.1に対応しないまま打ち捨てられているのでforkしたプロジェクトを利用しなければならない。 githubから直接インストールするには、以下のコマンドを実行する。
gem specific_install -l 'https://github.com/bartoszkopinski/aws-s3'
AmazonS3のアカウントはできている前提。 access_keyとsecret_keyはあるよね?
Firefoxからs3Storageを操作するプラグインS3Foxなどが便利。S3Foxのアカウント管理でキーを設定して、s3が使えることを確認する。
rails 4.1 からは秘密にしたい接続情報をconfig/secrets.ymlに記述するようになった。本番環境ではサーバーを環境変数を参照するように設定されているので、次のように設定して行く。
heroku config:set AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxx heroku config:set AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxx
S3Foxに戻って、原画・素材・実素材・システム画像のディレクトリを作成する。
そして、config/picture_io.ymlのproductionの項目にoriginal_picture、resource_picture、picture、system_pictureを(先ほどS3Foxから作成したディレクトリで)書き換える。
railsには通信を効率的にするassetパイプラインという機能がある。herokuはassetパイプラインを有効にしておかないと動かない。assetパイプラインはテスト環境では問題が起きないので、案外曲者である。
C:\Sites\heroku\pettantemp>bundle exec rake assets:precompile
参考 https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar
JavaScriptファイルが肥大化しすぎたため、 rails Installerを使ったWindows環境ではリソース不足によりコンパイルできない。これまでは Linux系OSでコンパイルしていたが、 RubyInstaller+DevKitなら問題なくいける。
本番環境向けにマイグレーションする。
rake db:migrate RAILS_ENV='production'
bundle exec rake assets:precompile RAILS_ENV=production
Publicの下にコンパイルされたファイルができる。これらをすべてherokuのプロジェクト側にコピーする。
これでherokuに転送するファイルは揃った。 ここからは普通にgitからaddしたりcommitしてPUSHしていくだけ。
C:\Sites\heroku\pettantemp>bundle install --without production C:\Sites\heroku\pettantemp>git add . C:\Sites\heroku\pettantemp>git commit -a -m "init"
pushすると自動的にデプロイされる。
C:\Sites\heroku\pettantemp>git push heroku master C:\Sites\heroku\pettanr>git push heroku master Enter passphrase for key '/c/Users/yas/.ssh/id_rsa': Counting objects: 701, done. Delta compression using up to 4 threads. Compressing objects: 100% (632/632), done. Writing objects: 100% (701/701), 466.25 KiB | 207 KiB/s, done. Total 701 (delta 241), reused 0 (delta 0) -----> Ruby/Rails app detected -----> Installing dependencies using Bundler version 1.3.0.pre.2 Running: bundle install --without development:test --path vendor/bundle - -binstubs bin/ Fetching gem metadata from http://rubygems.org/......... Fetching gem metadata from http://rubygems.org/.. Installing rake (10.0.3) Installing multi_json (1.5.0) Installing activesupport (3.1.1) Installing builder (3.0.4) Installing i18n (0.6.1) Installing activemodel (3.1.1) Installing erubis (2.7.0) Installing rack (1.3.6) Installing rack-cache (1.2) Installing rack-mount (0.8.3) Installing rack-test (0.6.2) Installing hike (1.2.1) Installing tilt (1.3.3) Installing sprockets (2.0.4) Installing actionpack (3.1.1) Installing mime-types (1.19) Installing polyglot (0.3.3) Installing treetop (1.4.12) Installing mail (2.3.3) Installing actionmailer (3.1.1) Installing arel (2.2.3) Installing tzinfo (0.3.35) Installing activerecord (3.1.1) Installing activeresource (3.1.1) Installing xml-simple (1.1.2) Installing aws-s3 (0.6.3) Installing bcrypt-ruby (3.0.1) Using bundler (1.3.0.pre.2) Installing coffee-script-source (1.4.0) Installing execjs (1.4.0) Installing coffee-script (2.2.0) Installing rack-ssl (1.3.2) Installing json (1.7.6) Installing rdoc (3.12) Installing thor (0.14.6) Installing railties (3.1.1) Installing coffee-rails (3.1.1) Installing orm_adapter (0.0.7) Installing warden (1.2.1) Installing devise (1.5.2) Installing jquery-rails (2.1.4) Installing rails (3.1.1) Installing pettanr_creative_commons_v30_licenses (0.0.6) Installing pettanr_pettan_commons_v01_licenses (0.0.7) Installing pettanr_pettan_protected_v01_licenses (0.0.7) Installing pettanr_pettan_public_v01_licenses (0.0.7) Installing pettanr_public_domain_v01_licenses (0.0.5) Installing pettanr_unknown_v01_licenses (0.0.6) Installing pg (0.14.1) Installing rmagick (2.13.1) Installing sass (3.2.4) Installing sass-rails (3.1.6) Installing therubyracer-heroku (0.8.1.pre3) Installing uglifier (1.3.0) Installing validate_url (0.2.0) Installing validates_existence (0.8.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 d ata: <= 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. -----> Writing config/database.yml to read from DATABASE_URL -----> Preparing app for Rails asset pipeline Detected manifest.yml, assuming assets were compiled locally -----> Rails plugin injection Injecting rails_log_stdout Injecting rails3_serve_static_assets -----> Discovering process types Procfile declares types -> (none) Default types for Ruby/Rails -> console, rake, web, worker -----> Compiled slug size: 17.4MB -----> Launching... done, v6 http://pettanr.herokuapp.com deployed to Heroku To git@heroku.com:pettanr.git * [new branch] master -> masterここまでいけばherokuアプリケーションを開ける。
C:\Sites\heroku\pettantemp>heroku openまともには開かないでエラーページが出る。作業はここで終わらない。チャレンジャーはログを見る。
C:\Sites\heroku\pettantemp>heroku logs
実はまだheroku上のdbにテーブルを構築してない。ローカルでは
C:\Sites\heroku\pettantemp>rake db:migrateのようにrakeコマンドを使うが、herokuでは
C:\Sites\heroku\pettantemp>heroku run rake db:migrateとやっていく。他のrakeコマンドも同様。
管理者アカウントの作成ではrakeコマンドではなく、railsコマンドを使う。consoleを開いてirbから実行する。
C:\Sites\heroku\pettantemp>heroku run console irb(main):001:0> Admin.start('admin@mail.adr.ess', 'admin_password') => true irb(main):002:0> SpeechBalloonTemplate.import('') irb(main):003:0> exit
ライセンスのインポートはrakeコマンドを使う。
C:\Sites\heroku\pettantemp>heroku run rake licenses:import
ここまでいけばぺったんRが動くはず。ワッショイ!
C:\Sites\heroku\pettantemp>heroku open
フキダシテンプレート、色など、必要に応じて突っ込む。
[PageInfo]
LastUpdate: 2015-08-07 07:59:44, ModifiedBy: yasushiito
[Permissions]
view:all, edit:login users, delete/config:members