users: - name: user01 group: group01 - name: user02 group: group02
# yamlの構文チェック ruby -r yaml -e 'YAML.load STDIN;' < test.yml # rubyオブジェクトとして出力 ruby -r yaml -e 'pp YAML.load STDIN;' < test.yml {"users"=> [{"name"=>"user01", "group"=>"group01"}, {"name"=>"user02", "group"=>"group02"}]} # rubyオブジェクトとして、部分だけ出力 ruby -r yaml -e 'ym=YAML.load STDIN; puts ym["users"]' < test.yml {"name"=>"user01", "group"=>"group01"} {"name"=>"user02", "group"=>"group02"}
記事:
tree -l . ├── dir.rb -> ./sub/dir.rb └── sub └── dir.rb
p "__dir__: " + __dir__ p "Dir.pwd: " + Dir.pwd p "__FILE__: " + __FILE__
ruby dir.rb "__dir__: /tmp/0/sub" "Dir.pwd: /tmp/0" "__FILE__: dir.rb"
brew update brew install rbenv ruby-build rbenv install -l rbenv install 2.0.0-p645 # インストールされているバージョンの確認 rbenv versions * system (set by /Users/user01/.rbenv/version) 2.0.0-p645 # ユーザのデフォルトrubyバージョンを切り替え rbenv global 2.0.0-p645 # カレントディレクトリのバージョンを切り替える場合 rbenv local 2.0.0-p645 # パスを追加 echo 'eval "$(rbenv init -)"' >> ~/.profile source ~/.profile
rbenv uninstall 2.1.2
brew uninstall rbenv rm -rf ~/.rbenv
rbenv exec gem install bundler
/etc/profile.d/rvm.sh がログインする度に読み込まれるが、rpmで入れていたバージョンを常に使いたい場合に無効にできる
echo "__rvm_unload" >> ~/.bashrc
rvm use system
gem dependency aws-sdk Gem aws-sdk-1.7.1 httparty (~> 0.7) json (~> 1.4) nokogiri (>= 1.4.4) uuidtools (~> 2.1)
vi test.rb ---- def test STDERR.puts caller.join("\n") end test() ---- # 実行 ruby test.rb test.rb:5:in `<main>'
irb は Interactive Ruby の略です。 irb を使うと、Ruby の式を標準入力から簡単に入力・実行することができます。
rvmsudo gem install rubygems what_methods wirble vi ~/.irbrc ---- require 'rubygems' require 'pp' require 'irb/completion' # TABで入力補完 require 'what_methods' # メソッドが分からないときに .what? で教えてくれる require 'wirble' # シンタックスハイライト、TABによる入力補完 IRB.conf[:AUTO_INDENT] = true IRB.conf[:EVAL_HISTORY] = 100 # 実行結果の履歴 __[n] IRB.conf[:SAVE_HISTORY] = 1000 # 上下キーでヒストリーを呼び出し IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb_history" # start wirble (with color) Wirble.init Wirble.colorize ----
irb # 時間を調べる 1.9.2-p290 :001 > Time.now => 2012-10-05 12:12:24 0900 # "hoge"文字列の長さで 4 を返すメソッドを知りたい 1.9.2-p290 :001 > "hoge".what? 4 "hoge".length == 4 "hoge".size == 4 "hoge".bytesize == 4 => [:length, :size, :bytesize] # 3.14 の小数点切り捨て 4 を返すメソッドを知りたい 1.9.2-p290 :015 > 3.14.what? 4 3.14.ceil == 4 => [:ceil] # 実行結果を __[n] でヒストリーから呼び出せる 1.9.2-p290 :001 > 1+2 => 3 1.9.2-p290 :002 > "var" + "foo" => "varfoo" 1.9.2-p290 :003 > __[1] => 3 1.9.2-p290 :004 > __[2] => "varfoo" # 終了 1.9.2-p290 :001 > quit
rvm seppuku # globalに入っている場合はsudoを付ける sudo rvm seppuku sudo rm /etc/profile.d/rvm.sh # ~/.rvm , ~/.bashrc の中, ~/.bash_profile の中が消えているか確認
sudo yum -y install bash awk sed grep which ls cp tar curl gunzip bunzip2 git subversion # シングルユーザにインストールする場合: ~/.rvm/ curl -L https://get.rvm.io | bash -s stable source ~/.bash_profile # マルチユーザにインストールする場合: /usr/local/rvm/ sudo curl -L https://get.rvm.io | bash -s stable source /etc/profile.d/rvm.sh # 必要パッケージ確認 rvm requirements # rvmでインストールできるパッケージ一覧 rvm list known # MRI Rubies [ruby-]1.8.6[-p420] [ruby-]1.8.7[-p370] [ruby-]1.9.1[-p431] [ruby-]1.9.2-p180 [ruby-]1.9.2-p290 [ruby-]1.9.2-p318 [ruby-]1.9.2[-p320] [ruby-]1.9.2-head [ruby-]1.9.3-preview1 [ruby-]1.9.3-rc1 [ruby-]1.9.3-p0 [ruby-]1.9.3-p125 [ruby-]1.9.3[-p194] [ruby-]1.9.3-head ruby-head ...
# herokuに合わせてrubyをインストール(1.9.3だとtapsでエラー db:pushが失敗する) yes | rvm install ruby-1.9.2-p290 # デフォルトを1.9.2に指定。ユーザ毎に実行する必要がある rvm use ruby-1.9.2-p290 --default # 1.9.3の場合は、libyaml-develが必要 yum -y --enablerepo=epel install libyaml-devel # 確認 ruby -v ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] which ruby /usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby
gem -v 1.8.24 gem list *** LOCAL GEMS *** bundler (1.2.1) rake (0.9.2.2) rubygems-bundler (1.1.0) rvm (1.11.3.5) # railsインストール gem install rails # バージョン確認 rails -v Rails 3.2.8
rvmsudo gem install rails
sudo su - cd /tmp
yum --enablerepo=epel install yaml libyaml-devel wget http://futuremix.org/downloads/checkinstall-1.6.1-1.src.rpm wget http://futuremix.org/downloads/checkinstall-1.6.1-1.x86_64.rpm rpm -ivh checkinstall-1.6.1-1.x86_64.rpm
cd /tmp/ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz tar xvfz ruby-1.9.3-p194.tar.gz cd ruby-1.9.3-p194 ./configure make #Rubyのパッケージ化 checkinstall --fstrans=no Should I create a default set of package docs? [y]: y Slackware [S], RPM [R] or Debian [D]? R >> ruby-1.9.3-p194 #インストール rpm -Uvh --nomd5 /usr/src/redhat/RPMS/x86_64/ruby-1.9.3-p194-1.x86_64.rpm ruby -v ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
gem update --system gem -v 1.8.24
gem install rdoc rdoc-data rdoc-data --install mkdir -p /usr/local/lib/ruby/gems/1.9.1/gems/bigdecimal-1.1.0 mkdir -p /usr/local/lib/ruby/gems/1.9.1/gems/io-console-0.3 mkdir -p /usr/local/lib/ruby/gems/1.9.1/gems/json-1.5.4 mkdir -p /usr/local/lib/ruby/gems/1.9.1/gems/minitest-2.5.1 gem rdoc --all --overwrite
gem install rails rails -v Rails 3.2.2
require 'logger' logger = Logger.new(STDERR) logger.level = Logger::WARN logger.progname = File.expand_path(__FILE__) logger.datetime_format = "%Y-%m-%d %H:%M:%S"
sudo yum install ruby rubygems libxml2-devel libxslt-devel -y sudo gem install fog yajl-ruby
[WARNING] MultiJson is using the default adapter (ok_json). We recommend loading a different JSON library to improve performance. nil
sudo gem install yajl-ruby
RubyGemsは、Ruby言語用のパッケージ管理システムであり、Rubyのプログラムと("gem" と呼ばれる)ライブラリの配布用標準フォーマットを提供している。gemを容易に管理でき、gemを配布するサーバの機能も持つ。Rubyバージョン1.9以降では標準ライブラリの一部となっている。
gem uninstall $(gem list --no-versions)
bin/example.rb lib/hoge.rb
require File::expand_path('../lib/hoge', File.dirname(__FILE__))
# 呼び出し元関数情報を取得 # # @note # - p parse_caller(caller.first) def parse_caller(at) if /^(.+?):(\d+)(?::in `(.*)')?/ =~ at file = $1 line = $2.to_i method = $3 return [file, line, method] end end # 実行中関数名を取得 def function_name return caller.first.scan(/`(.*)'/).to_s end
__LINE__ __FILE__
print x.inspect() と同等
STDIN STDOUT STDERR $stdin $stdout = $defout $stderr = $deferr
STDOUT.print x STDERR.print x $stdout.print x $stderr.print x
$stderr = $stdout
mkdir -p ~/.vim/{ftdetect,syntax} cat >> ~/.vim/ftdetect/ruby.vim << 'EOS' " detect ruby filetype au BufRead,BufNewFile *.rb set filetype=ruby EOS cat >> ~/.vim/syntax/ruby.vim << 'EOS' set expandtab set tabstop=2 shiftwidth=2 softtabstop=2 set autoindent EOS