Gemfileのバージョンの指定の仕方

RubyのGemfilesへのバージョンの書き方を忘れるのでメモ

バージョンを4.1.8に固定する

gem "rails", "4.1.8"

バージョンを4.1.8以上の最新にする
4.2とか入ります

gem "rails", ">=4.1.8"

バージョンを4.1.8以上、4.1.xの最新が入ります
4.2以上にはなりません

gem "rails", "~>4.1.8"

Perfect Ruby 1章を読んでみた

RubyはRailsから入って、Rubyがわからずはまっている気がしたので

を買いました
1章を読んでみた気づきをメモ

Rubyではすべてがオブジェクトです

コードの出力をコメント # で書いてます

p 100.to_s
# "100"
p 100.class
# Fixnum

p nil
# nil
p nil.class
# NilClass

100とかnil(いわゆるnull)もクラスです
100はFixnumクラスなので、to_sとかメソッドを持っています

def sample_method
  'sample'
end
p sample_method
# "sample"

メソッドは は snake caseで書くのが一般的

def happy?
  true
end
p 'happy' if happy?
# "happy"

メソッドには ? もつけられる
bool値を返すメソッドとわかりやすい

sample_variable = 'sample'
p sample_variable
# "sample"

変数名はsnake case が一般的

1.upto(2) do |n|
  puts n
end
# 1
# 2

こんなのがブロックという

1.upto(2) {|n| puts n}
# 1
# 2

ブロックを一行で書くとこう

Ruby 面白いかも

vagrant内のrails serverにアクセスできない

vagrantでubuntuを起動、ruby on railsをインストールして

$ rails s

=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-02-07 05:49:04] INFO  WEBrick 1.3.1
[2015-02-07 05:49:04] INFO  ruby 2.2.0 (2014-12-25) [x86_64-linux]
[2015-02-07 05:49:04] INFO  WEBrick::HTTPServer#start: pid=2359 port=3000

としてサーバー起動

vagrantで固定IP 192.168.33.10 をふって、port 3000でつながるようにしておいたので
http://192.168.33.10:3000/
で、ブラウザにアクセス..がアクセスできない

rails s のコンソールにも反応が無いです
ping 192.168.33.10は通る

rails 2.2からは localhost しかつながらないらしい

$ rails s -b 0.0.0.0
とするとどのアドレスからもつながるようです

これで解決しました

gem install mysql2でエラー

$ gem install mysql2
でエラー発生

[code lang=text]
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=/home/vagrant/.rbenv/versions/2.2.0/bin/$(RUBY_BASE_NAME)
–with-mysql-dir
–without-mysql-dir
–with-mysql-include
–without-mysql-include=${mysql-dir}/include
–with-mysql-lib
–without-mysql-lib=${mysql-dir}/lib
–with-mysql-config
–without-mysql-config
–with-mysql-dir
–without-mysql-dir
–with-mysql-include
–without-mysql-include=${mysql-dir}/include
–with-mysql-lib
–without-mysql-lib=${mysql-dir}/lib
–with-mysqlclientlib
–without-mysqlclientlib
–with-mlib
–without-mlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-zlib
–without-zlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-socketlib
–without-socketlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-nsllib
–without-nsllib
–with-mysqlclientlib
–without-mysqlclientlib
–with-mygcclib
–without-mygcclib
–with-mysqlclientlib
–without-mysqlclientlib

extconf failed, exit code 1

Gem files will remain installed in /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/mysql2-0.3.17 for inspection.
Results logged to /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/extensions/x86-linux/2.2.0-static/mysql2-0.3.17/gem_make.out
Installing truncate_html 0.9.2
Installing spring 1.2.0
An error occurred while installing mysql2 (0.3.17), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.17'` succeeds before bundling.
[/code]

調べてたらmysql周りのものが足りないらしく
$ sudo apt-get install mysql-client libmysqlclient-dev
で解決しました

参考サイト) http://stackoverflow.com/questions/19765290/error-failed-to-build-gem-native-extension-error-installing-mysql2