おっさんエンジニアの備忘録

ここは主におっさんエンジニアが技術的な事を調べたり、試してみたりしたことを備忘録的に書いていくものです。忘れっぽいからね。誰かの参考になったら嬉しい。

Padrinoをインストールしたよ

Padrinoを動かしてみるよ。

前回はRubyをインストールしたところまででしたが、今回はRubyのFWを入れて、Web開発を進めていきたいと思います。
今回選んだFWはPadrinoです。
http://jp.padrinorb.com/

PadrinoはSinatraをベースにしたFWで、ActiveRecordとか使えて便利みたいです。上述の公式(翻訳)サイトのドキュメントは途中まで日本語になっているのですが、まだまだ英語の領分が大きい・・・頑張ります。
インストール自体は簡単です。

$ mkdir ${work}
$ cd ${work}
$ bunlde init
$ echo 'gem "padrino"' >> Gemfile
$ bundle install --path vendor/bundle

Gemを使うと基本的にグローバルにインストールされてしまうのですが、--pathを指定することで、ローカルに閉じた状態でインストールすることができるようです。
ただ、この場合、グローバルに入っていないので、インストールしたモジュールへのアクセスがbundler経由じゃないと呼び出せないので注意が必要です。

Padrinoには便利なGeneratorがあるよ。

次に、サンプルのアプリを作成してみます。
今回はRestfulなAPIを作りたかったので、必要そうなものを最小限で構成してみます。
その他、いろんなモジュールを組み合わせてアプリを作ることができたります。詳しくは公式を見ていただけると大丈夫かと。

$ bundle exec padrino g project study_project -d activerecord -t rspec -e none 

これでアプリのひな形が出来ました。
ソース管理するときはこちらをルートにしてpushしてあげると良い感じです。

さて、実際に動かす準備を進めます。
まずは依存モジュールを落としてきます。こちらもグローバルが何となく気持ち悪かったので、ローカルに配置してあります。

$ cd study_project
$ bundle install --path vendor/bundle

無事に配置が終わったら、コントローラを作ります。
この辺もGeneratorがたくさんあるので、うまく活用していきます。

$ bundle exec padrino g controller Hello

先程も触れましたが、padrinoをグローバルに入れていないので、bundle execから呼び出します。これによりapp/controllers/hello.rbが出来ます。何やらコメントが書いてあるので、何となく書き方はわかるかと思いますが、一応以下のような記述を追記します。

get :world do
  "Hello World!"
end

これで準備は万端です。早速動作確認してみましょう。
RubyではWEBrickというサーバが同梱されているらしいので、そちらで動作確認できます。

$ bundle exec padrino s

「s」は「start」の意味です。
無事立ち上がったら、http://localhost:3000/hello/worldで動作確認してみます。

文字列が表示されたら成功です!
通常のWeb開発であれば、erbなどテンプレートエンジンを組み合わせて、画面描画を行ったりするのでしょうけど、今回はRestfulAPIを作りたいので、その辺は不要ですね。

APIにしたいのだけど・・・

RestfulなAPIを作るときにGrapeというものがあるのですが、どうもRailsを基準にしているのか、Padrinoではうまく動かないっぽいです・・・
Padrinoとのつなぎ込みのモジュールもあったのですが、PadrinoのVerが「0.11」に準拠しているらしく、おっさんの落としてきた「0.12」だとエラーになってしまいました・・・

次回はこの辺をしっかり調査して、何とか動かせるようにしたいです。
※もしくは妥協案を探したい・・・