カテゴリー別アーカイブ: Rails

[ruby] Bundler4つの便利な使い方(初期化、インストール、省略する設定など)


Ruby(Rails)での開発にあたり、開発環境(エディタやツールなど)の調査や試用をしていました!!
その中で、パッケージ管理ツールのBundlerのサブコマンドやオプションでこれはいいと思ったものについてまとめてみたいと思います。間違いなどあればご指摘お願いいたいします。

前提としてRubyは rbenv,ruby-build でビルドした環境です。

まず、Bundlerとは

Rubyのパッケージを管理するもの。
Gemfileというファイルにパッケージ名、バージョンを記述してgemのライブラリを管理出来ます。また、グループ化などもでき、環境に応じてgemを管理することができます。


次から3つの便利な使い方です。

その1 初期化コマンド

とても簡単で、initサブコマンドを実行するだけです。

    % bundle init

このコマンドを実行したら、以下の内容で「Gemfile」のデフォルトファイルが生成されます。

Gemfileの中身

# A sample Gemfile
source "https://rubygems.org"

# gem "rails"

その2 インストールコマンド

基本的には「bundle install」というコマンドを実行すればGemfileから該当のgemをインストールしてくれるのですが、色々とオプションを設定すると環境依存がない形でインストール出来ます。

    % bundle install --path=vendor/bundle --binstubs=vendor/bin

–path と –binstubs という2つのオプションを指定しました。

  • [–path]
    指定したディレクトリへGemをインストールします。指定しない場合はrbenvのグローバルな領域へインストールされます。
    上記の場合、カレントディレクトリに「vendor/bundle」というディレクトリが掘られ、インストールされます。

  • [–binstubs]
    指定したディレクトリへコマンドとなるスクリプトを配置します。指定しない場合はカレントに 「bin」というディレクトリが出来てそれいかにスクリプトが置かれます(※1 注意が必要)
    上記の場合、「vendor/bin」というディレクトリにスクリプトが配置されます。
    「bundle_bin」というディレクトリ名を指定するのも多いようですが、自分はvendor/binとしてインストールしました。

  • [–without]
    ここでは指定していないが、以下のようにwithooutに設定するとtest , development グループに記述したgemのインストールを除外する。  

    % bundle install --without test development

(※1) Rails4では–binstubsでデフォルトで指定されるbinディレクトリだと不都合が起きるようです。rails3までで使われていた「script」ディレクトリがなくなり、「bin」ディレクトリが代わりにできるようになったからだそうです。
* Rails 4.0 と bundler install –binstubs について
* Rails4から–binstubsが使えなくなる件

その3 設定を確認するコマンド

上記のような 「–path」や「–binstubs」などの設定を確認するコマンドです。
「bundle config」

    % bundle config
    Settings are listed in order of priority. The top value will be used.
    
    path
      Set for your local app (/PATH_TO_PROJECT/.bundle/config): "vendor/bundle"
    
    bin
      Set for your local app (/PATH_TO_PROJECT/.bundle/config): "vendor/bin"
    
    disable_shared_gems
      Set for your local app (/PATH_TO_PROJECT/.bundle/config): "1"

その4 bundle exec コマンドを省略する件

bundle execを使わずに済む方法(rbenv編) の記事を参考にしてみて、rbenv-binstubsというプラグインを入れてみた。

    % mkdir ~/.rbenv/plugins
    % cd .rbenv/plugins
    % git clone git://github.com/ianheggie/rbenv-binstubs.git

これで以下のように該当プロジェクトでbundle exec を省略して rails などのコマンドを実行するとbundleでインストールしたものが利用できる。

    % cd RAILS_PROJECT_DIR
    $ rails --version
    Rails 3.2.13

しかし、、、これだと「–path=vendor/bundle」など –path でbundleのインストールディレクトリを指定した場合は利用でいないみたいだ。。

    ↓これだとコマンドが読み込めない
    % bundle install --path=vendor/bundle --binstubs=vendor/bin
    
    ↓このようにすると使える(グローバルにインストール)
    % bundle install --binstubs=vendor/bin

これはおそらくグローバルに入っていないとrbenvのディレクトリへのパスが通ってない状態なので、インストールしたプラグインが利用することができないためです。
そもそも以下のようにrailsコマンドを打ってもコマンドが見つからないというエラーとなる。

% rails --version
zsh: command not found: railss

グローバルに何でもかんでも入れたくないので、最終的に以下のように明示的にパスを設定することで解決しました。

export PATH=./vendor/bin:$PATH

RVMでの利用方法
RVM の after_cd_bundler というフックスクリプトを利用することができるそうです。
http://qiita.com/items/a1fbac19686a8fcd2e34


おまけ

以下のようにBundleで利用するgemがどの領域のgemを利用しているか確認する場合、以下のコマンドで確認できます。

% rbenv which pry
% bundle show pry

インストール可能な gem を探すには

hogeってキーワードに引っかかるパッケージ一覧出す
% gem search --remote hoge
省略形
% gem search -r hoge

ネットワークからパッケージを探して詳しく一覧で出す(現在最新のバージョン)
% gem search -rd hoge

ネットワークからパッケージを探して詳しく一覧で出す(過去バージョンも出力)  
% gem search -rda hoge 

Ruby on Railsの環境構築 (WindowsでRubyのマルチ環境~Railsのインストール)


なかなか、WindowsにRubyを入れるっていう情報が少ない気がしたので、Railsの環境を作るところ

までを書いてみました。Ruby使いはやっぱりUnix系なのかな。MacBookAirがほしい。。。

 

●ダウンロード・インストール

Windows版Ruby

rubyinstaller-1.9.2-p290.exe」をダウンロードし実行。

ウィザードを進めていくだけ。。解凍先は「C:\Ruby192」とする。

[*注意]保存ディレクトリの名前にはスペースなどの空白は含めない。

 

インストール確認

>ruby -v
>gem -v

●gemのアップデート

>gem -v
1.7.2
>gem update --system
>gem -v
1.8.11

 

●gemでrakeをアップデート

>gem list
*** LOCAL GEMS ***
minitest (1.6.0)
rake (0.8.7)
rdoc (2.5.8)
rubygems-update (1.8.11)

>gem update rake

>gem list
*** LOCAL GEMS ***
minitest (1.6.0)
rake (0.9.2.2, 0.8.7)
rdoc (2.5.8)
rubygems-update (1.8.11)

 

●Development Kitをインストール

WindowsでC/C++で書かれたnative extensionをインストールするために必要。

(gem でmysqlとかpgをインストールするときに必要そう)

Windows版RubyのサイトのDownloadより[Other Userful Downloads]セクションから

「DevKit-tdm-32-4.5.2-20110712-1620-sfx.exe」をダウンロードする。

ダブルクリックで解凍する。解凍先は「C:\DevKit」とする。

以下のコマンドを実行

>cd c:\DevKit
>ruby dk.rb init
>ruby dk.rb instal
##DevelopmentKitの動作確認(jsonをインストールしてみる)
>gem install json

 

●gemでpikをインストール

> gem install pik
> gem list
##pik_install コマンドでpikを置くディレクトリを指定
> pik_install "C:\_Rubypik"

環境変数のPathに[C\:_Rubypik]を通すとpikコマンドが使えるようになる。

 

pikの動作確認

現在入っているバージョンを表示

>pik list
* 192: ruby 1.9.2p290 (2011-07-09) [i386-mingw32]

 

pikでインストール可能なRubyを表示

>pik list -r

 

Rubyの1.8.7をインストール

> pik install ruby -v 1.8.7-p352

 

バージョンを表示

>pik list
  187: ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]
* 192: ruby 1.9.2p290 (2011-07-09) [i386-mingw32]

 

Rubyのバージョン切り替え

>pik use 187
>ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]

※バージョンの切り替え範囲はターミナル内のみとなる ※ Gem環境も完全に分離されているので、影響が無いです。  Railsをインストールする

>gem install rails
>rails -v
Rails 3.1.1

 

●SQLite3のインストール

http://www.sqlite.org/

  1. ブラウザで http://www.sqlite.org/ を開く。
  2. ページ上部のメニューバーにある「Download」リンクをクリック。
  3. 「Precompiled Binaries For Windows」セクションにある sqlite-dll-win32-x86-******.zip をクリックして保存。
  4. 保存したファイルをダブルクリックして展開。
  5. 展開されたフォルダにある sqlite3.dll をコピー。
  6. 「C:\Ruby192\bin」をにペーストする。

 

●Railsを使ってベースとなるアプリケーションを作成する

##任意のディレクトリへアプリを作るためコマンドプロンプトで移動する
> cd c:\workspace
##アプリケーションコマンドを実行
(カレントディレクトリにworkアプリケーションを作る、sqlite3の依存ライブラリもインストールしアプリを生成する)
> rails new work -d sqlite3

 

●指定するモデルに応じたMVCのソースを自動生成・テーブル作成

##アプリケーションのディレクトリへコマンドプロンプトで移動する
> cd c:\workspace\work
##「rails generate scaffold モデル名 カラム名:カラムの型(カラム名:カラムの型...)」
> rails generate scaffold user id:integer name:string email:string
##上記scaffoldコマンドで定義した足場よりテーブルを作成
> db:migrate

 

●Railsアプリケーションを実行する(Rails組み込みのWebサーバ)

> rails server    又は rails s

Webブラウザで http://localhost:3000/users へアクセス

アクセスができuserの登録などができる画面が出力されるはず。

 

●感想

思ったよりも簡単だった。でもMacやLinux系でやったほうがいいんだろうなって感じました。

基本的にサイトや色々な書籍もUnixベースで書かれているしなぁ。。

あとは、開発するIDE(エディタ)をどうするかだなぁ!!また調べてやってみよ♪

RadRails」と「NetBeans」 とかかな。。。わからん

 

【参考】

Windowsへのインストール

http://www.oiax.jp/rails/zakkan/rails_3_1_installation_on_windows.html

DevelopmentKitのインストールについて

http://d.hatena.ne.jp/kent013/20110416/1302941938

複数バージョン管理pikインストール

http://d.hatena.ne.jp/holypp/20110407/1302193459

http://d.hatena.ne.jp/akishin999/20101107/1289098441