「小さなチーム、大きな仕事」でお馴染みの 37 signailsが開発した「設定が不要なRails & RackサーバPow」を使いはじめました!
このPowを使うメリットは、
* コマンド一つでPowサーバにRailsアプリへのリンクを作れる * LAN内にあるスマホ/タブレットから開発中のURLにアクセスできる
ちなみにこちらはMac限定です。
🐞 Powインストール
Powのインストールは次のコマンドのみ。もし、万一エラーが出るようなら37signals/pow GitHubを確認してみてください。
curl get.pow.cx | sh |
🚌 Powderのインストール
Powのコマンド入力支援してくれるPowderをインストール。
gem install powder |
🗻 Powへのリンクの作成
Rails/Rackアプリケーションのフォルダで以下を入力するとpowへのリンクを作成できます。
powder link |
ブラウザでhttp://app_folder_name.dev/
にアクセスするか、powder open
と入力するとアプリケーションが表示されます。そのほかのpowderのコマンドについては、下にまとめています。
🚜 LAN内のスマートフォン/タブレットからアプリケーションにアクセス
pow + xip.ioによって、LAN内のスマートフォン/タブレットからアプリケーションに簡単にアクセスできます。
まず、Mac側のローカルIPを確認。
ifconfig |
次にスマホ/タブレットのブラウザから、http://app_folder_name.192.168.24.99.xip.io/
にアクセスするとアプリを表示することができます。
🐹 Guard::Powのインストール
Railsには、config/environment.rbなど再起動しないと反映されないファイルが幾つかあります。
これをGem Guardで監視して変更があった場合には、自動でPowが再起動されるようにします。
gem install guard-pow |
🍄 Guardファイルの設定
Guardはファイル変更を監視して、サーバの再起動やテストの実行などを行ってくれるGemです。詳細は「RSpec/Spork/Guard/Growl/Rails 3.2.9で作る - プリチーなTDD環境!」をご覧ください。
ここからはGuardとの連携方法について説明します。
まず、Guardfileを生成/更新します。
guard init pow |
このコマンドを実行すると以下のようにプロジェクト直下のGuardfileが更新されます。
guard 'pow' do |
これでGuardがファイルを監視して、変更があった場合にはPowを自動で更新してくれます。
😸 補足: localhostでアクセスするリンク先の設定
localhost
でアクセスするリンク先は次のコマンドで設定できます。
ln -s /app/path/to/ ~/.pow/default |
😼 補足: Pow-RVMの連携Rubyのバージョンを指定する
もし、Powでリンクを張ったプロジェクトのRVMのバージョンを指定したい場合は、まずプロジェクトの直下に.rvmrc
を作成して以下を登録。
rvm 1.9.3 |
次に同じくプロジェクトの直下に.powrc
を作成して以下を追加。
if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".rvmrc" ]; then |
RVM関連の設定詳細は公式ページの2.3.2 Specifying Ruby Versions with RVMを参照。
🐯 補足: Powを使っていてError starting application(Error: Response was not received)が発生する場合
Mac/Homebrew/Powの環境で、Error starting application(Error: Response was not received)
がある一定の確率で出る場合は、Nokogiriのインストール方法に問題がある可能性があります。
Nokogiriを削除して、Nokogiri公式のインストール方法で再イントールしてください。
参考ソース(タイトルからはわかりにくいですがPowについてのトラブルっぽいです):
nginx - Rails (local) server shutdown problem - Stack Overflow
🎉 補足: Powderのコマンド一覧
使いそうなコマンドをピックアップしました。詳細はRodreegez / powder | GitHubにあります。
powder link => current_dirのシンボリックリンクを作成
powder link [bacon] => ファイル名指定のシンボリックリンクを作成
powder remove => シンボリックリンクを削除
powder open => ブラウザでcurrent_dirのアプリケーションを表示
powder list => ~/.powのシンボリックリンク一覧を出す
powder applog => アプリケーションのログをtail -fで出力
powder restart => サーバPowの再起動
powder cleanup => アクセス出来ないアプリケーションへのリンクを削除
powder update => Powのアップデート
🎂 補足: Powのアンインストール
もし何らかの事情でPowをアンインストールしたくなった場合は次のコマンドを実行。
curl get.pow.cx/uninstall.sh | sh |
アンインストールの詳細は公式ページの1.2 Uninstalling Powを参照。
🐠 関連記事
Rails 3.2.9/Bootstrap/Haml プロジェクト新規作成 最短ガイドだよ! にてGuardの設定/ブラウザのオートリロードの方法などを載せています。
🐮 参考リンク
🍣 変更来歴
12/06 pow + xip.ioの説明を追加。コマンド一覧の位置を変更。別途説明を追加。
12/16 11:30 pow + xip.ioのアドレスがまちがっていたので修正
12/18 19:00補足: Powを使っていてError starting application(Error: Response was not received)が発生する場合を追加
12/18 20:40補足: Powのアンインストールを追加
12/18 20:45補足: Pow-RVMの連携Rubyのバージョンを指定するを追加
01/15 20:50補足: localhostでアクセスするリンク先の設定を追加
🗽 テスト環境
テスト環境は以下のとおりです。
OS : Mac Lion(OS X 10.7) Ruby : 1.9.3 Rails : 3.2.9 haml : 3.1.7 coffee-script : 3.2.1 Rspec : 2.12.0