elixir 1.0.0-rc1のアップデート
Elixir 1.0.0-rc1がリリースされました。homebrewで0.15.1から1.0.0-rc1にアップグレードした手順です。
1. brewのアップデート
$ brew update
2. elixirのバージョン確認
$ brew info elixir elixir: stable 0.15.1 (bottled), devel 1.0.0-rc1, HEAD http://elixir-lang.org/ /usr/local/Cellar/elixir/0.15.1 (322 files, 4.2M) * Poured from bottle From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/elixir.rb
devel 1.0.0-rc1 が追加されていますね。
3. elixirのアップグレード
$ brew unlink elixir
$ brew install elixir --devel
$ elixir -v
Elixir 1.0.0-rc1
rebar
Elixirコンパイラのコンパイルにはrebarが使われています。コンパイラ周りのコードリーディング中に調べた内容をまとめました。
rebarとは
rebarとは、Erlangアプリケーションやポートドライバの、コンパイル・テスト・リリースを簡単に行う事ができる統合ビルドツールです。
rebar自体にescriptを含んでいるので配布やプロジェクトに直接含める事が簡単にできます。またErlang/OTPの標準的な慣習に沿ったプロジェクト構成に従うので、ビルド時の設定作業が少なくて済みます。更にモジュール/ライブラリの依存関係管理もしてくれるので、ユーザーはGithub等のリポジトリからライブラリを簡単に再利用できます。
すばらです。
インストール
rebarのインストールはmacだとhomebrewでインストールできます。Windowsの場合はわかりません。Google先生に聞いて下さい。
$ brew install rebar
ソースからコンパイルしたい場合は以下の様にGithubからソースをとってきてビルドしてください。
$ git clone git://github.com/rebar/rebar.git $ cd rebar $ ./bootstrap $ mv rebar /path/to/your/bin
Githubにバイナリがあるのでそれをパスの通ったフォルダに入れても良いです。
$ wget https://github.com/rebar/rebar/wiki/rebar
$ mv rebar /path/to/bin
使い方
https://github.com/rebar/rebar/wiki に詳細な情報があります。
前提
rebarは標準的なOTPアプリケーション構成の慣習に沿って実行されます。OTPアプリケーションのフォルダ構成は以下の様になります。
myapp ├── src │ └── myapp.app.src ├── ebin │ └── myapp.app ├── priv ├── include ├── (test) └── (c_src)
ebin/myapp.app は src/myapp.app.src をテンプレートとして、rebarがコンパイル時に生成します。この時、ebin以下にあるモジュールをmyapp.appのモジュール指定(module)に追加してくれます。
rebar.config
rebar.configに実行時のオプションを記述する事ができます。オプションの詳細は https://github.com/rebar/rebar/wiki/Rebar-commands#options を参照してください。
ヘルプ関連
rebarについて調べたい時は、以下のオプションをつけてrebarを実行します。テンプレートについては後述します。
$ rebar -c # コマンド一覧を表示 $ rebar help <command> # commandの説明を表示 $ rebar --version # バージョンを表示 $ rebar list-templates # 使用可能なテンプレートとテンプレートに渡すパラメータ名を表示
よく使うコマンド
頻繁に使用されるであろうコマンドです。
- rebar compile
srcファイル以下のソースコードをコンパイルして、ebin以下にbeamファイルを配置します。また、src/myapp.app.srcをテンプレートに、ebin/myapp.appファイルを生成します。コンパイルをサポートしているファイルは https://github.com/rebar/rebar/wiki/Rebar-commands#supported-source-formats を参照してください。
- rebar eunit
eunitテストを実行します。eunitについては http://www.erlang.org/doc/apps/eunit/index.html を参照してください。
- rebar doc
edocを使ってドキュメントを生成します。edocについては http://www.erlang.org/doc/apps/edoc/index.html を参照してください。
- rebar clean
コンパイル時にできた実行ファイルやテストモジュールを削除します。
依存関係管理に関するコマンド
rebarはアプリ/モジュール/ライブラリの依存関係管理をしてくれますが、その依存関係はrebar.configのdepsタプルに記述します。
depsタプルの構成は
{ deps, [ Dependency1, Dependency2, ... ] }.
となります。各Dependencyは更に
{ App, VsnRegex, Source }
と分解できます。各要素は以下の通りです。
- App : OTPアプリケーション名のアトムか文字列
- VsnRegex : OTPアプリケーションの対象バージョンにマッチする正規表現
- Source : OTPアプリケーションのフェッチ先を表すタプル
Sourceは更に以下のタプルに分解できます。
{ ScmType, URL, Target }
さらに見ていくと、
- ScmType : SCMの種類、git/hg(mercury)/bzr(bazzar)を指定できます
- URL : リポジトリのURL
- Target : 該当リポジトリ内のブランチ/タグ/リビジョン/コミット
となり、Targetは以下の3タイプあります。
- ブランチ指定
{ branch, "master" }. % masterブランチ { branch, "hoge" }. % hogeブランチ
以下の2つは同じ意味となります。
{ git, Url, "" }. { git, Url, { branch, "HEAD" } }.
- タグ指定
{ tag, "v1.0.0" }. % v1.0.0のタグ
- リビジョン/コミット指定
コミットは文字列で指定します。
"15bc558d8222b011e2588efbd86c01d68ad73e60"
また、各Dependencyタプルの後ろに、[raw] を付ける事ができます。このrawオプションを付けると、標準的なOTPアプリの構造でないアプリも許容するようになります。(例えば、src/target_app.app.src や ebin/target_app.app ファイルがないものなど)
wikiにあるサンプルを見てみましょう。
{ deps, [ % OTPアプリ名 : em % 対象バージョン : 全て % 取得先 : https://github.com/sheyll/erlymock.git のmasterブランチ { em, ".*", { git, "https://github.com/sheyll/erlymock.git" } }, % OTPアプリ名 : nano_trace % 対象バージョン : 全て % 取得先 : https://github.com/sheyll/nano_trace.git の feature/rebar-migrationブランチ { nano_trace, ".*", { git, "https://github.com/sheyll/nano_trace.git", { branch, "feature/rebar-migration" } } }, % OTPアプリ名 : mochiweb % 対象バージョン : 2.3.2 % 取得先 : https://github.com/mochi/mochiweb.git の v2.3.2タグ { mochiweb, "2.3.2", {git, "https://github.com/mochi/mochiweb.git", {tag, "v2.3.2"}}}, % mochiwebをコミットでの指定 % 取得先 : https://github.com/mochi/mochiweb.git の % masterブランチの 15bc558d8222b011e2588efbd86c01d68ad73e60 のコミット % {mochiweb, "2.3.2", {git, "https://github.com/mochi/mochiweb.git", % "15bc558d8222b011e2588efbd86c01d68ad73e60"}, % アプリ名 : rebar % 対象バージョン : 全て % 取得先 : git://github.com/rebar/rebar.git の masterブランチ % rawオプションがついているので標準的なOTPアプリの構成でなくても良い { rebar, ".*", {git, "git://github.com/rebar/rebar.git", {branch, "master"}}, [raw]} ]}.
それではコマンドを見ていきましょう。なお、以下のコマンドは全てrebar.configに指定してある関連OTPアプリケーションが対象となります。
- rebar get-deps : 関連OTPアプリをdepsフォルダに配置する
- rebar update-deps : 関連OTPアプリをupdateする
- rebar check-deps : 関連OTPアプリを表示する
- rebar list-deps : 関連OTPアプリの詳細を表示する
- rebar delete-deps : 関連OTPアプリを削除する
雛形作成に関するコマンド
rebarは各種ソースファイルの雛形をテンプレートから作成する事もできます。アプリケーション、モジュール、ライブラリ、テスト等のテンプレートがあり、自分でテンプレートを作成する事もできます。(rebar list-templatesで確認できます)
雛形作成は以下の様にテンプレート名と、テンプレートに渡すパラメータと値のオプションを付けて実行します。
$ rebar create template=<テンプレート名> <パラメータ>=<値>
- rebar create template=simpleapp appid=<アプリ名>
OTPアプリケーションの雛形として、.app.srcファイル、アプリケーションビヘイビア、スーパバイザビヘイビアのソースファイルが生成されます。
$ rebar create template=simpleapp appid=myapp ==> sample (create) Writing src/myapp.app.src Writing src/myapp_app.erl Writing src/myapp_sup.erl
- rebar create template=simplelib libid=<ライブラリ名>
ライブラリの雛形として、.app.srcファイル、.erlファイルが生成されます。
$ rebar create template=simplelib libid=mylib ==> sample (create) Writing src/mylib.app.src Writing src/mylib.erl
- rebar create template=simplenode nodeid=<ノード名>
Reltool関連ファイルの雛形が生成されます。リリースに関する制御については https://github.com/rebar/rebar/wiki/Release-handling を参照してください。
$ rebar create template=simplenode nodeid=mynode ==> sample (create) Writing reltool.config Writing files/erl Writing files/nodetool Writing files/mynode Writing files/sys.config Writing files/vm.args Writing files/mynode.cmd Writing files/start_erl.cmd Writing files/install_upgrade.escript
これら3つのコマンドは、以下のエイリアスがあります。
# 以下の2つは同じ意味 $ rebar create template=simpleapp appid=myapp $ rebar create-app appid=myapp # 以下の2つは同じ意味 $ rebar create template=simplelib libid=mylib $ rebar create-lib libid=mylib # 以下の2つは同じ意味 $ rebar create template=simplenode nodeid=mynode $ rebar create-node nodeid=mynode
その他のテンプレートとしては以下があります。
$ rebar create template=simplesrv srvid=mysrv # gen_serverビヘイビアのコールバックモジュール ==> sample (create) Writing src/mysrv.erl $ rebar create template=simplefsm fsmid=myfsm # gen_fsmビヘイビアのコールバックモジュール ==> sample (create) Writing src/myfsm.erl $ rebar create template=simplemod modid=mymod # モジュールとそのテスト ==> sample (create) Writing src/mymod.erl Writing test/mymod_tests.erl $ rebar create template=ctsuite testmod=mytest # common test suite ==> sample (create) Writing test/mytest_SUITE.erl $ rebar create template=basicnif module=mymodule # CのNIF(Native Implemented Function)モジュール ==> sample (create) Writing src/mymodule.erl Writing c_src/mymodule.c
- ユーザー定義テンプレート
テンプレートを追加したい場合は、 ~/.rebar/templates/ ディレクトリにテンプレートファイルを配置すれば使用できるようになります。ユーザー定義のテンプレートは https://github.com/mbbx6spp/rebar-templates あたりから探してくると良いでしょう。
リリース関連
- rebar generate
reltoolを使ってリリースパッケージを生成します。 https://github.com/rebar/rebar/wiki/Release-handling を参照してください。また、 https://gist.github.com/voluntas/4243786 にErlangのリリースについての解りやすい解説があります。
- rebar generate-upgrade
アップグレードパッケージを生成します。https://github.com/rebar/rebar/wiki/Upgrades を参照してください。
その他
- rebar ct
common test suiteを実行します。common testについては http://erlang.org/doc/man/common_test.html を参照してください。
- rebar escriptize
ebinにescriptファイルを生成します。 escriptについては http://www.erlang.org/doc/man/escript.html を参照してください。
- rebar xref
xrefを走らせます。xrefについては http://www.erlang.org/doc/man/xref.html を参照してください。
まとめ
rebarについて調べた事をまとめました、ほぼ https://github.com/rebar/rebar/wiki に書いてある事が全てですけどね。「統合」ビルドツールという事だけあって、かなり多機能です。
リリースやアップグレード周りのコマンドに関しては、本格的にリリース作業・アップグレード作業をやった事が無いのでいまいちピンときませんでした。きっとバリバリErlangを使ってみないとありがたみは解らないのかもしれません。精進します。
EHG
Elixirについて何か調べると、海外サイトの情報しか出てこない事が不満です。
日本語の情報は確かにあるんですが、チュートリアル・環境設定・WAFに関するものが多く、言語のコア部分に関するものはほとんどありません。
Elixirはまだ若い言語で、活発に開発が進められているため、ほぼ毎日結構なコミットがあります。また、Elixir自体、Erlang/OTP上に構築されたErlangアプリケーションという事もあって、Erlangのコードリーディング対象として丁度良いと思い、Elixir言語のコードリーディングを始めました。
自分なりにElixirの構造やコンパイル時の挙動について調べた結果を少しずつですが文章にしています。ある程度まとまったら、どこか適当なサイト(Qiitaあたり)にでも公開しようと思います。
名前はちょっと大げさ過ぎました・・・。
RubyKaigi2013 #前夜
会場までのアクセス
JR山手線 大崎
↓
↓
東京国際交流館プラザ平成
http://maps.google.com/?ll=35.62018648392562,139.77641344070435
開場 9:30
2年ぶりの参加なので楽しみ!
RubyKaigi2011 #1日目 自分用レポート
参加してきました、自分用メモ
裏の講演も面白そうなのがいっぱい。ニコニコにあがる?と思うのでそれまで我慢。
[基調講演][Ruby Ruined My Life] by Aaron Patterson (tenderlove)
[Next Version of Ruby 1.8 and 1.9] by CRuby development Member
- 1.8に今後はない、1.9を使ってね
- 1.9.3からライセンス変わる、GPLv3非互換だったから
- 1.9.3にprivate constatnt機能が追加される
class YourLib class InnerClass end private_constant :InnerClass end YourLib::InnerClass #=> private constant YourLib::InnerClass referenced
[Rubyを利用した大規模ウェブサービスの開発,運用] by 舘野祐一
- cookpad
- ruby+railsは遅くない、200msec
- ut,it大切、javascript-test,capybara-webkit
- testをリモートで動かす, remote spec
- 大江戸RubyKaigiの発表資料を見てね
[CRubyGCの並列世界] by nari
[闇RubyKaigi]
- 本日のメインイベント
- 闇
- Rubyきゃいぎ
やる夫がRubyをはじめるようです(3)
ラストです。
----------------------------------------------------------------------------------- ╋━━━━━━━━━━━━━━━╋ ┃やる夫がRubyをはじめるようです(3)┃ ╋━━━━━━━━━━━━━━━╋ [41] 翌日 |┃三 ガラッ |┃ ____ |┃/⌒ ⌒\ やらない夫、早速Rubyの事おしえるお。 |┃(●) (●) \ ───|┃:⌒(__人__)⌒:::::\ 言われたとおり、やる夫の愛機持ってきたお。 |┃ |r┬-| |⌒) |┃ `ー'ォ // (⌒ヽ・ ・ ̄ / |┃ノ / |┃ つ < |┃ (::)(::) ヽ |┃/ > ) |┃ (__) [42] / ̄ ̄\ / _ノ \ おう、やる夫、よく来たな。 | ( ●)(● . | (__人__) じゃあ早速はじめるぞ。 |, ` ⌒´ノ │ } ヽ、 ソ イ斗┴r┐` .; / ̄`ーゞ、 / |__ 〈ー─r、 / \ ∨\ |,ベ._ / | { . : : : . ヽ>ー\[ ̄{ 〉\|、_ | `丶}\ __\_]~∨'\`ヽ :| ._ \_}/r‐-}\ ゙,`''く l ゙, ト、: :./ / ̄`` ぐ└f'二)::{ ', | !,ゞ┐ `、∨ ´ ,.、-''"~ ̄}_{‐''く:::{_ ', _|_|_,rー'、_ }{ / _、-'''"~ ̄{_\;;;;;j;><;:::::\:::ヘ}\ }∨: / _、-''゙~ ̄ ̄ \::::},之_ ヽ 〉∨ / ,.、イ;;ノ_ `ヽ} {: \,/\ -‐ '" /` ̄ :.:} [43] /7 // // まずは、Rubyの種類についてだ。 __ // . /ノ ヽ\ .// やる夫、Rubyってどれくらい種類があると思う? . / (●)(●〉/ l (__人_,//l . | `⌒// ノ l // ./ . ヽ r-‐''7/)/ / と'_{'´ヽ / _.、__〉 ト, { 、__} |.i ヽ _,.フ .|.| [44] _____ ━┓ / ― \ ┏┛ Rubyの種類?Versionの違いじゃなくてかお? /ノ ( ●) \ ・ . | ( ●) ⌒) | Rubyは1つじゃないのかお? . | (__ノ ̄ / . | / \_ ⊂ヽ∩\ /´ (,_ \.\ . | / \_ノ [45] / ̄ ̄\ / _ノ \ ああ、実はRubyには色々な種類の実装があるんだ。 | ( ●)(●) | (__人__) もちろんVersionの違いもあるがな。 | ノ | ∩ノ ⊃ } /ヽ / _ノ } ( ヽ / / ノ ヽ “ /_| | \__/__ / [46] -‐ '´ ̄ ̄`ヽ、 / /" `ヽ ヽ \ Versionは大きく分けて1.8系と1.9系の2つあるにょろ。 //, '/ ヽハ 、 ヽ 〃 {_{ノ `ヽリ| l │ i| 1.8系と1.9系は違いが大きくて、これから始めるなら1.9系を レ!小l● ● 从 |、i| お勧めするにょろ。 ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ /⌒ヽ__|ヘ ゝ._) j /⌒i ! \ /:::::| l>,、 __, イァ/ /│ . /:::::/| | ヾ:::|三/::{ヘ、__∧ | `ヽ< | | ヾ∨:::/ヾ:::彡' | [47] / ̄ ̄\ / _ノ \ Versionは大きく分けて1.8系と1.9系の2種類ある。 | ( ●)(● | (__人__) もうひとつは実装の種類だ。 . | ノ | ∩ ノ ⊃ (ちゅるやさん、いつの間に来たんだ?) / ./ _ノ (. \ / ./_ノ │ \ “ /___| | . \/ ___ / [48] ------------------------------------------------------------------- ・MRI (Matz' Ruby Implimentation) Rubyの公式な実装、まつもとゆきひろ氏によって開発された。 C言語による実装なので、別名CRubyとも呼ばれる。 ・JRuby Javaによって書かれた実装。Java仮想マシン(JVM)上で動くので、 JVMさえあればどのプラットフォームでも動く。 ・IronRuby マイクロソフトによるRubyの実装。 .NET Framework上で動作する。 ・MacRuby Objective-Cで書かれた実装。 Mac OS X上で動作する。 ・Rubinius 大部分がRuby自身で書かれたRubyの実装。 ------------------------------------------------------------------- -、 ( ヽ ヽ,_ \ /゙i、`゙""゙ヽ -‐ '´ ̄ ̄`ヽ、 / `'i ゙、 / /" `ヽ ヽ \ l, _/ヽ .入 //, '/ ヽハ 、 ヽ ヾ、 / .ノ 〃 {_{\ /リ| l │ i| `ー'く /.\. レ!小l● ● 从 |、i| \\_. ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ ( __ノヽ__|ヘ ゝ._) j /⌒i ! . \\::| l>,、 __, イァ/ / │ /\\ | ヾ:::|三/::{ヘ、__∧. | . `ヽ<\\ ヾ∨:::/ヾ:::彡' | 実装に関しては本当にいっぱいあるにょろ。 有名な実装を挙げるとこんな感じにょろ。 この他にも MagLev、GoRuby、RubyEE などがあるにょろ。 ※詳しく知りたい人はキーワード「Ruby 実装」等で Google it! [49] ____ / u \ いっぱいあって、どれを選べば良いか / \ /\ わからないお・・・。 / し (○) (○) \ | ∪ (__人__) J | \ u `⌒´ / [50] / ̄ ̄\ / _ノ \ まあ、最初はMRIの1.9系を入れておけばいいだろ。 | ( ●)(●) . | (__人__) 他の実装を試したくなったらRVM (Ruby Version Manager) | ` ⌒´ノ みたいなツールがあるからそれを使えばいい。 . | } . ヽ } ※UNIX系の環境で複数のRuby処理系を ヽ ノ mm インストール・共存させるツール /  ̄ ̄ ̄ つノ | | ̄ [51] -‐ '´ ̄ ̄`ヽ、 / /" `ヽ ヽ \ それじゃあ、早速インストールするにょろ。 //, '/ ヽハ 、 ヽ 〃 {_{ リ| l.│ i| やる夫くんのマシンのOSは何にょろ? レ!小l\ `ヽ 从 |、i| ヽ|l > ● | .|ノ│ |ヘ⊃ 、_,、_,⊂⊃j | ,| | /⌒l __, イァト |/ | | / /::|三/::// ヽ | | | l ヾ∨:::/ ヒ::::彡, | [52] ∩_ 〈〈〈 ヽ やる夫のマシンはWindowsだお。 ____ 〈⊃ } /⌒ ⌒\ | | /( ●) (●)\ ! ! / :::::⌒(__人__)⌒:::::\| l | |r┬-| | / \ ` ー'´ // / __ / (___) / [53] / ̄ ̄\ / _ノ \ WindowsならWindows版のバイナリがあるから | ( ●)(●) それを入れるのが手っ取り早いな。 . | (__人__) | ` ⌒´ノ MacならMacRubyのインストーラーかMacPortsから、 . | } Linuxならソースコードからコンパイルして入れるといいだろ。 . ヽ } ヽ ノ ビシッ / く__,-ュ__ て | ___ 三) ( | | [54] -‐ '´ ̄ ̄`ヽ、 / /" `ヽ ヽ \ それじゃあ、Rubyの公式サイトから //, '/ ヽハ 、 ヽ Windows版Rubyバイナリをダウンロードするにょろ。 〃 {_{ノ `ヽリ| l │ i| レ!小l● ● 从 |、i| ※URL:http://www.ruby-lang.org/ja/downloads/ ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ /⌒ヽ__|ヘ ゝ._) j /⌒i ! ActiveScriptRubyかRuby-mswin32がお勧めにょろ。 \ /:::::| l>,、 __, イァ/ /│ バージョンは1.8.7じゃなくて1.9.2だから、 . /:::::/| | ヾ:::|三/::{ヘ、__∧ | 間違えないよう注意するにょろ。 `ヽ< | | ヾ∨:::/ヾ:::彡' | [55] ____ / \ おっし、インストールしたお。 / ─ ─\ / (●) (●) \ | (__人__) | ___________ \ ` ⌒´ ,/ .| | | ノ \ .| | やる夫専用 | . /´ | | | | l | | | ヽ -一ー_~、⌒)^),-、 .|_|___________| ヽ ____,ノγ⌒ヽ)ニニニニ _|_|__|_ [56] / ̄ ̄\ / ヽ、_ \ あとRubyと一緒にRubyGemsっていうパッケージ管理ツールを (●)(● ) | 入れておくのが良いだろ。 (__人__) | ( | 1.9系のRubyなら標準で入っているからインストールは不要だがな。 . { | ⊂ ヽ∩ く | '、_ \ / ) | |_\ “ ./ ヽ、 __\_/ [57] -‐ '´ ̄ ̄`ヽ、 / /" `ヽ ヽ \ じゃあ、ちゃんとインストールされたか //, '/ ヽハ 、 ヽ 確認するにょろ! 〃 {_{`ヽ ノ リ| l │ i| レ!小l● ● 从 |、i| やる夫くん、コマンドプロンプトを起動するにょろ。 ヽ|l⊃ r‐‐v ⊂⊃ |ノ│ /⌒ヽ__|ヘ ヽ ノ j /⌒i ! ※Macならターミナル、Linuxならコンソールで確認してください \ /:::::| l>,、 __, イァ/ /│ . /:::::/| | ヾ:::|三/::{ヘ、__∧ | `ヽ< | | ヾ∨:::/ヾ:::彡' | [58] ------------------------------------------------------------------- C:\Users\yaruo> ------------------------------------------------------------------- ____ /⌒ ⌒\ わかったお! / ( ●) (●)\ / ::::::⌒(__人__)⌒:::::\ | |r┬-| | \ `ー'´ / ノ \ . /´ ヽ カ | l l||l 从人 l||l l||l 从人 l||l カ タ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ┌ ┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐ ,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄ [59] / ̄ ̄\ / _ノ \ よし、それじゃあ「ruby -v」でRubyのバージョン、 | ( ●)(●) 「gem -v」でRubyGemsのバージョンを表示させてみろ。 . | (__人__) | ` ⌒´ノ . | } . ヽ } ヽ ノ ビシッ / く__,-ュ__ て | ___ 三) ( | | [60] ------------------------------------------------------------------- C:\Users\yaruo> ruby -v 'ruby' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:\Users\yaruo> ------------------------------------------------------------------- ____、′ 、 ’、 ′ / \ . ’ ’、 うごかないお・・・。 / ─ ─\ 、′・” ”; ” ’、 / (●) (●) \ ’、′・ ’、.・”; ” ’、 | (__人__) ’、′ ’、 (;;ノ;; (′‘ ・. ’、′”; \ ` ⌒´ ’、′・ ( (´;^`⌒)∴⌒`.・ ” ; ’、′ ノ 、 ’、 ’・ 、´⌒,;y'VAIO;;;;;ノ、"'人 ヽ / 〃 、(⌒ ;;;:;´'从 ;' ;:;;) ;⌒ ;; :) )、 ヽ ( ヽ、 ,.γ ー( ´;`ヾ,;⌒)´ 从⌒ ;) `⌒ )⌒:`.・ ヽ | ヽ γ⌒ヽ)ニ`:::、 ノ ...;:;_) ...::ノ ソ ...::ノ [61] -‐ '´ ̄ ̄`ヽ、 / /" `ヽ ヽ \ たぶんRubyの実行プログラムにパスが通ってないにょろ。 //, '/ ヽハ 、 ヽ 〃 {_{`ヽ ノ リ| l │ i| Rubyをインストールしたディレクトリにある「bin」フォルダに レ!小l● ● 从 |、i| パスを設定するにょろ。 ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ /⌒ヽ__|ヘ ゝ._) j /⌒i ! \ /:::::| l>,、 __, イァ/ /│ . /:::::/| | ヾ:::|三/::{ヘ、__∧ | `ヽ< | | ヾ∨:::/ヾ:::彡' | [62] ____ /─ ─\ Rubyのインストール先が「C:\Program Files\Ruby-1.9.2」だから / (●) (●).\ 「C:\Program Files\Ruby-1.9.2\bin」にパスを通すお。 / (__人__) \ | ` ⌒´ | \ / ノ \ . /´ ヽ カ | l l||l 从人 l||l l||l 从人 l||l カ タ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ┌ ┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐ ,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄ [63] -‐ '´ ̄ ̄`ヽ、 / /" `ヽ ヽ \ パスを通したらもう一度試すにょろ。 //, '/ ヽハ 、 ヽ 〃 {_{`ヽ ノ リ| l │ i| レ!小l● ● 从 |、i| ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ /⌒ヽ__|ヘ ゝ._) j /⌒i ! \ /:::::| l>,、 __, イァ/ /│ . /:::::/| | ヾ:::|三/::{ヘ、__∧ | `ヽ< | | ヾ∨:::/ヾ:::彡' | [64] ------------------------------------------------------------------- C:\Users\yaruo> ruby -v ruby 1.9.2p136 (2010-12-25 revision 30365) [i386-mswin32_100] C:\Users\yaruo> gem -v 1.3.7 C:\Users\yaruo> ------------------------------------------------------------------- ____ /_ノ ヽ、_\ やったお! ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ これでやる夫もRubyistだお。 /⌒)⌒)⌒) ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | /|^| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | ノ | | | \| | | ヽ / `ー'´ | | | | | l||l 从人 l||l. | | やる夫専用 | ヽ .---一ー_~、⌒)、⌒)^),| | | ヽ _____,ノ|二二二二|_|_______________| [65] / ̄ ̄\ / ノ \ \ (いや、まだ起動させただけだろ・・・) | (●)(●) | . | u.(__人__) .| それじゃ次はお約束のアレをやるぞ。 r、 | ` ⌒´ .| ,.く\\r、 ヽ ノ やるお、コマンドプロンプトで \\\ヽ} ヽ / 「irb」ってうってみろ。 rヽ ` ヽ / ァ'´ヽ └'`{ . \.| / i ヽ、._ ヽ、_,r' .| `ヽ、 /' | `'ー'´ [66] ------------------------------------------------------------------- C:\Users\yaruo> irb irb(main):001:0> ------------------------------------------------------------------- ____ /⌒ ⌒\ わかったお! / ( ●) (●)\ / ::::::⌒(__人__)⌒:::::\ | |r┬-| | \ `ー'´ / ノ \ . /´ ヽ カ | l l||l 从人 l||l l||l 从人 l||l カ タ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ┌ ┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐ ,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄ [67] -‐ '´ ̄ ̄`ヽ、 / /" `ヽ ヽ \ irbは「interactive ruby」の略にょろ。 //, '/ ヽハ 、 ヽ rubyの式を標準入力から入力/実行する為のツールにょろ。 〃 {_{ノ `ヽリ| l │ i| レ!小l● ● 从 |、i| お約束の Hello World プログラムを実行してみるにょろ。 ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ /⌒ヽ__|ヘ ゝ._) j /⌒i ! \ /:::::| l>,、 __, イァ/ /│ . /:::::/| | ヾ:::|三/::{ヘ、__∧ | `ヽ< | | ヾ∨:::/ヾ:::彡' | [68] / ̄ ̄\ / _ノ \ 標準出力に文字列を表示させるのは「puts」だ。 | ( ●)(●) やる夫、あとはわかるな? . | (__人__) | ` ⌒´ノ . | } . ヽ } ヽ ノ ビシッ / く__,-ュ__ て | ___ 三) ( | | [69] ____ /⌒ ⌒\ もちろんだお! / ( ●) (●)\ / ::::::⌒(__人__)⌒:::::\ | |r┬-| | \ `ー'´ / ノ \ . /´ ヽ カ | l l||l 从人 l||l l||l 从人 l||l カ タ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ┌ ┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐ ,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄ [70] ------------------------------------------------------------------- C:\Users\yaruo> irb irb(main):001:0> puts "やる夫がRubyをはじめるようです 完" やる夫がRubyをはじめるようです 完 => nil irb(main):002:0> ------------------------------------------------------------------- -----------------------------------------------------------------------------------