gem update --system
gem help commands
gem environment
gem list
gem update
gem cleanup
gem sources -l
gem sources -a http://hoge.com
gem search hogehoge -r
gem which hogehoge
gem query -n ^hogehoge$ -r
gem install hogehoge
gem uninstall hogehoge
gem install hogehoge --no-ri --no-rdoc
gem fetch hogehoge
# Downloaded hogehoge-1.0.0
gem install hogehoge-1.0.0
gem install hogehoge -v 1.0.0
gem query -ra -n "^rails$"
rails -v #=> Rails 4.1.6
# ダメな例
gem uninstall rails
# 成功例
gem uninstal railties -v '4.1.6'
gem install rails -v 3.2.19
echo 'install: --no-ri --no-rdoc
update: --no-ri --no-rdoc' > ~/.gemrc
SSL証明書エラーによりインストール出来ないことがある。
一時的にHTTPSからHTTPに変更することで対応可能
gem source -a http://rubygems.org/
https://rubygems.org is recommended for security over http://rubygems.org
Do you want to add this insecure source? [yn] y
http://rubygems.org/ added to sources
インストール完了後に元に戻す
gem source -r http://rubygems.org/
ぷらい、と読む。irbはオワコン。
gem install pry pry-doc
pry
[1] pry(main)> .ls
[2] pry(main)> .pwd
pry(main)> shell-mode
解除するときはもう一度shell-modeを叩けばOK
pry(main)> hist
pry(main)> ls
[1] pry(main)> a = "hoge"
[2] pry(main)> ls
locals: _ _dir_ _ex_ _file_ _in_ _out_ _pry_ a version
[3] pry(main)> cd a
[4] pry("hoge"):1> nesting
Nesting status:
--
0. main (Pry top level)
1. "hoge"
[5] pry("foo"):1> ls
Comparable methods: < <= > >= between?
String methods: ...
[6] pry("foo"):1> upcase
=> "FOO"
アプリの適当な場所に以下のコードを差し込むと、ブレークポイントとしてPryコンソールが立ち上がる
binding.pry
gem install awesome_print
.pryrcをつくって、標準の出力をawesome_printにする
vi ~/.pryrc
require 'awesome_print'
Pry.print = proc{|output,value| output.puts value.ai }
Ruby2.0からデフォルトエンコーディングがUTF-8に。
Stringオブジェクトは、自分自身のエンコーディング情報を持っている。これを変更するには
hoge = "Hoge".encode("EUC-JP")
p hoge.encoding
[0].scan(/[0-9a-f]{2}/)
["48656c6c6f2c20776f726c64"].pack("H*")
require 'base64'
a = "Hellow World"
p Base64.encode64(a)
b = Base64.encode64(a)
p Base64.decode64(b)
文字列内で変数を展開するには#{}を使う
a = "hoge"
puts "Hellow, #{a}"
puts "1 + 3 = #{1 + 3}"
バックスラッシュ\でエスケープできるが、連続して使うと読みづらいしミスの原因になる
puts "Hellow, \"Hoge\""
文字列の先頭に%おき、半角記号で文字列を囲めばそのまま単一引用符や二重引用符を使える(パーセント記法)。パーセント記法は二重引用符で囲んだ文字列と同じ扱いになる
puts %!"Hi", 'Yahoo'!
puts %!"1 + 3 =" '#{1 + 3}'!
複数行に渡るような長い文字列を使いたい場合はヒアドキュメントを使う
puts <<EOF
やーこまったこまった
すげー困ってる困ってる
はっはっはっは
EOF
s= <<`EOS`
date
echo "-----------------------------"
ps
EOS
# インスタンス自体に結合する場合
str1 = "Hellow"
str1 << " Ruby"
str1.concat(" World!")
# 返り値に結合した文字列を返す場合
str2 = "Hellow"
puts str2 + " World"
puts "Hey " * 3
s = "i love Ruby"
# 大文字に揃える
puts s.upcase #=> "I LOVE RUBY"
# 小文字に揃える
puts s.downcase #=> "i love ruby"
# 先頭のみ大文字に、残りは小文字に揃える
puts s.capitalize #=> "I love ruby"
upcase、downcase、capitalizeの後ろに!つけると破壊的な操作ができるけど、基本使わん。
……いつ使うんだこれ?
puts "i lOVE rUBY".swapcase #=> "I Love Ruby"
コマンドをバッククォートで囲む。
puts `date`
s = "Apple Banana Orange"
p s[0..4] #=> "Apple"
p s[6, 6] #=> "Banana"
# 範囲を指定すればその範囲の文字が、ピンポイント指定だと文字コードが返る
p s.slice(0,3) #=> "App"
p s.slice(6) #=> 'B'
p s.slice(13..18) #=> "Orange"
s = "Apple Banana Orange"
# 範囲指定
s[0..4] = "Vine" #=> s = "Vine Banana Orane"
# 開始地点と長さ指定
s[5, 6] = "Lemon" #=> s = "Vine Lemon Orange"
"Hellow Ruby".each_char{|c| puts c}
"Hellow Ruby".each_byte{|c| puts c}
s = <<EOS
This is test.
Ruby, the Object Oriented Script Language.
EOS
s.each_line{|line| puts line}
" Hello, Ruby! ".strip #=> "Hello, Ruby!"
"999".to_i #=> 999
"10.1".to_f #=> 10.1
"010".oct #=> 8
"0xff".hex #=> 255
p "R".bytes #=> 82
p 82.chr #=> "R"
p "%c" % 82 #=> "R"
CUIツールを作るとき便利
s = "Ruby"
# 10文字を基準にずらす
p s.center(10) #=> " Ruby "
p s.ljust(10) #=> "Ruby "
p s.rjust(10) #=> " Ruby"
シーケンシャルな識別子を出すときに使える、とあるが、なかなか使いドコロがなくて存在を忘れる。
p "9".succ #>= "10"
p "a".succ #>= "b"
p "AAA".succ #>= "AAB"
p "A99".succ #>= "B00"
p "A099".succ #>= "A100"
s = "Apple Banana Apple Orange"
p s.sub("Apple", "Pine") #=> "Pine Banana Apple Orange"
s = "Apple Banana Apple Orange"
p s.gsub("Apple", "Pine") #=> "Pine Banana Pine Orange"
見つからなかったらnilが返る
s = "Apple Banana Apple Orange"
p s.index("Apple") #=> 0
p s.index("Banana") #=> 6
p s.index("Apple", 6) #=> 13
p s.rindex("Apple") #=> 13
p s.rindex("Apple", 6) #>= 0
入力受け取るときに大活躍
p "Hellow, Ruby!\n".chomp
"001,TAKEUCHI Hitoshi,Yokohama".split(",") #=> ["001", "TAKEUCHI Hitoshi", "Yokohama"]
p "%d.txt"% 100 #=> "100.txt"
# 複数渡す場合は配列で渡す
p "%s is %s"% ["Ruby", "God"] #=> "Ruby is God"
p 10.integer?
p 1.1.integer?
# 偶数ならtrue,奇数ならfalse
p 10.even?
# 奇数ならtrue,偶数ならfalse
p 11.odd?
p 10.abs
p -10.abs
p 0.zero?
p 10.zero?
p 2.gcd(7)
p 3.gcdlcm(7)
# self.downto(min) {|n|}
10.downto(1) {|n| p n}
# self.upto(max) {|n|}
1.upto(10) {|n| p n}
# self.step(limit, step = 1) {|n|}
2.step(10, 2) {|n| p n}
カウントは0からスタートする
# self.times {|n|}
10.times {|n| p n}
String#%はsprintfと同じ
# 10進法<=>2進法
"%b" % 251
251.to_s(2)
0b11111011.to_s
# 10進法<=>8進法
"%o" % 8
8.to_s(8)
010.to_s
# 10進法<=>16進法
"%x" % 251
251.to_s(16)
0xfb.to_s
# 任意の位取り記法文字列を整数へ変換したい
"6z".to_i(36)
"18b".to_i(12)
"18b".to_i(16)
"101100".to_i(3)
ちなみにto_sの引数は2 <= x <= 36まで可能(この範囲を超えた引数を与えるとエラー)
結論:自前で実装しろ。
モンキーパッチで書くならこんな感じ
class Integer
def falling_factorial(m)
return (0..(m - 1)).inject(1) {|r, k| r * (self - k)}
end
def rising_factorial(m)
return (0..(m - 1)).inject(1) {|r, k| r * (self + k)}
end
alias permutation falling_factorial
def factorial
return self.permutation self
end
def combination(m)
return (self.permutaton m) / (m.permutation m)
end
end
# これが
sum = 0
(1..10).each {|i| sum += i}
puts sum
# こうかける
puts (1..10).inject(0) {|sum,i| sum + i}
# ブロックの実行結果でハッシュを返したい場合の書き方
data = [:A, :B, :A, :C, :E, :A, :D, :B, :B, :C, :E]
p data.inject(Hash.new(0)) {|h, key| h[key] += 1; h }
# Array#.inspect
p [:A, :B, :A, :C, :E, :A, :D, :B, :B, :C, :E].inspect #=> "[:A, :B, :A, :C, :E, :A, :D, :B, :B, :C, :E]"
p [] << 1 #=> [1]
- \w 単語構成文字 [a-zA-Z0-9_]
- \W 非単語構成文字 [^a-zA-Z0-9_]
- \s 空白文字 [ \t\r\n\f]
- \S 非空白文字 [^ \t\r\n\f]
- \d 10進数字 [0-9]
- \D 非10進数字 [^0-9]
- \h 16進数字 [0-9a-fA-F]
- \H 非16進数字 [^0-9a-fA-F]
rails -v
rails new hogehoge
rails server
NodeJSをyumで入れる
yum install nodejs npm --enablerepo=epel
$ rails console
irb> ActiveRecord::Base.logger = Logger.new(STDOUT)
irb> User.find(1)
sudo時にPATHが通ってないのが原因
visodoでsudo時のPATH指定があるので、そこに追加する。追加するパスはwhich gemと叩いた時の場所による
sudo su -
visodo
- Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
+ Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/local/rbenv/shims/:/usr/bin
- オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル
- サクサク引けるRubyリファレンスマニュアル
- ruby-list
- 逆引きRuby - 逆引きRuby
- ruby の inject をわかりやすく説明してみる
- Ruby on Rails チュートリアル:実例を使って Rails を学ぼう
- sudo実行時に$PATHが通っていない場合の設定 - 黒川仁の文具堂ブログ三昧
- node.jsをyumでインストールする(centos6.5) - Qiita
- ActiveRecordが生成するSQLをrails console上に表示する | Ruby on Rails 備忘録 - Ride On Rails
- インストールや実行中にエラーが起こった場合の対処法 | Web制作者のためのSassの教科書 - 公式サポートサイト
- 初心者は覚えておきたいRubygemsのコマンドまとめ - Qiita
- Ruby逆引きレシピ