はじめに
RailsはおろかRubyもそんなに分かってない系エンジニアがパRailsを読んでみる。
読んでて分からなかったところを調べながら書いていきます。備忘録。
Ruby周辺ツールが分からない問題
Rails以前のところが分からなすぎる
gemはギリギリ分かる(気がする)(正直怪しい)けど、
Rake, Bundlerが謎。Bundlerはパッケージ管理的なものだと思ったけどRakeが謎。
なので本の内容を追いつつ、Gem,RakeとBundlerについて調べてみる。
gemとは
Rubyでライブラリを扱う際のパッケージ管理システムであるRubyGemsを扱うためのコマンドです。
パーフェクトRuby on Rails P20より
なるほど。
RubyGemsって何?という感じなので調べてみると、
多くのプログラミング言語と同様に、Ruby にも幅広いサードパーティのライブラリが提供されています。
それらのほとんどは “gem” という形式で公開されています。RubyGems は (Ruby に特化した apt-get と同じようなパッケージングシステムで) ライブラリの作成や公開、インストールを助けるシステムです。
なるほど…なるほど?Ruby専用のyumとかapt-get的なものという解釈か。
Rakeとは
Rake とは
Rake は Make によく似た機能を持つ Ruby で書かれたシンプルなビルドツールです。
Rake は以下のような特徴を持っています。
Rakefile (Rake における Makefile) は標準的な Ruby の文法で書くことができます。 XML ファイルを編集する必要はありませんし、Makefile の風変わりな文法 (タブだっけ?スペースだっけ?) に頭を悩ませる必要もありません。
ユーザは必須条件をタスクに指定できます。
Rake は暗黙のタスクを合成することをサポートしています。
配列のように振る舞うフレキシブルな FileList メソッドがあります。 FileList はファイル名やパス名を扱うのに便利です。
Rakefile をより簡単に作成するためにこのライブラリにはいくつかのタスクが同梱されています。
…うーん?
そもそもMakeがよく分かってないから理解できないのかな?
ビルドツール、という言葉はなんとなくでしか知らないので、
実際何をするものなのかがよく分かってない。
(コンパイルとか、ソースからソフトインストールするときなんかに出てくる印象)
と思って、ビルドツールで調べたらなかなか 闇が 深かったのでこれはちょっと置いておくことに。
とりあえず「Ruby製ビルドツール」ということは把握。
ビルドツールと言いつつ、定形コマンド実行ツール的な感じか。
※ 2016/04/26追記
Rakeはビルドツールとしてだけでなく、もっと広い用途に使えるものである、とのコメントを頂きました。
ありがとうございます!
Bundlerとは
What is Bundler?
Bundler provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed.
Bundler is an exit from dependency hell, and ensures that the gems you need are present in development, staging, and production. Starting work on a project is as simple as bundle install.
dependency hell…依存地獄みたいなニュアンスだろうか。すごい言葉だ…
プロジェクトごとに使用するgemを管理、バージョンとかも指定できるもの?かな?
genの依存関係まで解決してくれる!すごい!(あってる?)
実際にRailsしてみる
ある程度それぞれのツールの用途が分かったので、実際にRailsを動かしてみる。
Rubyは導入済みという前提。(with rbenv)
まずはRailsをインストールする。gemを使って、
$ gem install rails
これだけ。とても簡単。
ちなみにパRailsではバージョン4.1.1を使用しているので、バージョンを合わせたければ、
$ gem install rails -v 4.1.1
とすると指定バージョンがインストールされる。
railsのインストールができたら、
$ rails -v
でバージョン確認しつつインストールできてることを確認。
なお、ここでエラーを吐かれた場合はパスがちゃんと通ってない(反映されていない)場合が多いので、
$ exec shell
でシェルを再起動すると吉らしい。
(-lを付けてたり付けてなかったり、execの動作理解がやや怪しいので今度調べる)
railsのインストールができていたら、railsアプリケーションを作りたいディレクトリに移動し、
$ rails new アプリ名
と打ち込む。これだけでアプリケーションのテンプレート?が生成される。簡単。
なお、アプリ名で新しいディレクトリが作られ、その中に各種ファイルができるので、
わざわざ自分でアプリごとのディレクトリを作る必要はない。
なかなか多くのファイル、ディレクトリが作られるが、今はとりあえず詳しく見ないで進める。
rails newで生成されたアプリケーションは既に動作する状態なので、
試しにrails内蔵(組み込み?)のサーバを稼働させて確認する。
アプリケーションのルートディレクトリに移動し、
$ ./bin/rails server
とすると、内臓サーバ(WEBrick)が立ち上がる。
./bin/
以下に
ちなみに、前までは
$ bundle exec rails server
でrailsのコマンドを実行していたらしい。今でも使えるけど。
確かにGemfiles内にrailsがある。
サーバが立ち上がったらブラウザで"localhost:3000"などと打ち込むと
無事Railsアプリケーションのスタートページにアクセスできる。
Railsアプリがとりあえず出来たので、今回はここまで。