gist

2013年12月15日日曜日

Rails4 で気合を入れるプラグイン acts_as_kiai を作ってみた

Rails4でActivityRecordを拡張し、気合を入れてくれるプラグイン acts_as_kiai を開発したのでその時のメモです。

Github

https://github.com/tomoyukiinoue/acts_as_kiai

作り方をGistに記載しています。

https://gist.github.com/tomoyukiinoue/7968556

フォーマットがあれですが、Gistを埋め込んで表示しています。Gistの方が見やすいかも。

Rails4 で気合を入れるプラグイン acts_as_kiai を作ってみた

Rails4でActivityRecordを拡張し、気合を入れてくれるプラグイン acts_as_kiai を開発したのでその時のメモです。

基本的な流れ

  1. 仕様を決める
  2. 開発を始める
  3. コアを書く
  4. 気合を入れるフィールドを追加する
  5. 保存時に気合を入れる
  6. acts_as_kiaiを公開する

参考

基本的に以下を参考にしました。

他に参考になったサイトは途中で出てきます。

早速はじめてみましょう。

  1. 仕様を決める ==============

ある文字列を気合を入れて保存できるプラグインを考えてみます。

1.1 どんな仕様か

文字列中の句読点などを「っ!」に置換して保存するプラグインです。どの文字列を何に置換するかをまとめてみました。

置換前 置換後
っ!! 「こんにちわ。」=> 「こんにちわっ!!」
っ! 「たとえば、」=> 「たとえばっ!」
っっっ!!! 「嫌です!」=> 「嫌ですっっっ!!!」
!? ーーーっっっ!!!??? 「なに?」=> 「なにーーーーっっっつつつ!!!???」

考えないことを決める

考えないことを決めます。今回は作り方を説明したいので以下のことは考慮しません。

  • 。。。や、、、で連続する場合も何も考えずに置換する。
  • 半角のカンマ、ピリオド、!、? は置換しない。
  • 対象の文字列がカタカナの場合も置換後はひらがなで押し切る。
  • 保存するフィールドの文字数制限を超えても知らぬ存ぜぬ。

1.1 名前を決める

acts_as_kiai とします。

1.2 使い方を決める

kiaiフィールドに気合を入れる場合、以下のように記述します。

class Tweet < ActiveRecord::Base
	acts_as_kiai :kiai
end

保存すると以下のように気合が入ります。

tweet = Tweet.new({kiai :'こんにちわ、わたしの名前は山田太郎です。'})
tweet.save

puts tweet.kiai # => 'こんにちはっ!わたしの名前は山田太郎ですっ!!'
  1. 開発を始める ==============

プラグインの開発を始めるには、以下のコマンドを実行します。

$ rails plugin new acts_as_kiai && cd acts_as_kiai
      create  
      create  README.rdoc
      create  Rakefile
      create  acts_as_kiai.gemspec
      create  MIT-LICENSE
      create  .gitignore
      create  Gemfile
      create  lib/acts_as_kiai.rb
      create  lib/tasks/acts_as_kiai_tasks.rake
      create  lib/acts_as_kiai/version.rb
      create  test/test_helper.rb
      create  test/acts_as_kiai_test.rb
      append  Rakefile
      vendor_app  test/dummy

まずポイントとなるファイルは以下のものかと思います。

ファイル名 説明
lib/acts_as_kiai.rb プラグイン本体
test/acts_as_kiai_test.rb プラグインのテストファイル
test/dummy Railsアプリケーション本体

テストを実行してみます。

$ rake test
Run options: --seed 27853

 # Running tests:

.

Finished tests in 0.177723s, 5.6267 tests/s, 5.6267 assertions/s.

1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
  1. コアを書く ============

Stringクラスにto_kiaiというメソッドを追加して文字列を置換できるようにします。

実装を lib/acts_as_kiai/core.rb に書きたいので、test/core_test.rb を作成します。

# test/core_test.rb

require 'test_helper'

class CoreTest < ActiveSupport::TestCase

	# 「。」を「ッ!!」に置換します
	def test_convert_maru_to_kiai
		assert_equal 'こんにちわッ!!', 'こんにちわ。'.to_kiai
	end
	
end

テストを実行します。 (Gemfileにgem 'turn'を記入してbundle installしています)

$ rake test
Loaded Suite test/dummy/config/environments,test,test/dummy/app/controllers,test/dummy/app/helpers,test/dummy/config,test/dummy/config/initializers

Started at 2013-12-14 18:25:19 +0900 w/ seed 62186.

ActsAsKiaiTest
     PASS (0:00:00.179) test_truth

CoreTest
    ERROR (0:00:00.180) test_convert_maru_to_kiai
          undefined method `to_kiai' for "こんにちわ。":String
        @ test/core_test.rb:9:in `test_convert_maru_to_kiai'



Finished in 0.181821 seconds.

2 tests, 1 passed, 0 failures, 1 errors, 0 skips, 1 assertions

メソッドがないので失敗しました。

lib/acts_as_kiai.rblib/acts_as_kiai/corerequireして実装していきます。

# lib/acts_as_kiai.rb

require 'acts_as_kiai/core'

module ActsAsKiai
end
# lib/acts_as_kiai/core.rb

String.class_eval do 
	# 文字列に気合を入れます
	def to_kiai
		self.sub!(/。/, 'っ!!')
	end
end

テストを実行します。

 $ rake test

Started at 2013-12-14 18:38:29 +0900 w/ seed 60172.

ActsAsKiaiTest
     PASS (0:00:00.182) test_truth

CoreTest
     PASS (0:00:00.183) test_convert_maru_to_kiai

Finished in 0.183943 seconds.

2 tests, 2 passed, 0 failures, 0 errors, 0 skips, 2 assertions

テストが成功しました。

置換について「。」以外の仕様についてもテストと実装を繰り返します。

最終的に以下のようなコードになりました。

# test/core_test.rb

require 'test_helper'

class CoreTest < ActiveSupport::TestCase

	# 「。」を「っ!!」に置換します
	def test_convert_maru_to_kiai
		assert_equal 'こんにちわっ!!', 'こんにちわ。'.to_kiai
	end

	# 「、」を「っ!」に置換します。
	def test_convert_ten_to_kiai
		assert_equal 'たとえばっ!', 'たとえば、'.to_kiai
	end

	# 「!」を「っっっ!!!」に置換します。
	def test_convert_bikkuri_to_kiai
		assert_equal '嫌ですっっっ!!!', '嫌です!'.to_kiai
	end

	# 「!?」を「ーーーっっっ!!!???」に置換します。
	def test_convert_hatena_to_kiai
		assert_equal 'なにーーーーっっっつつつ!!!???', 'なに!?'.to_kiai
	end

end

正規表現を使って置換しています。半角全角に注意。

# lib/acts_as_kiai/core.rb

String.class_eval do 
	# 文字列に気合を入れます
	def to_kiai
		# !?以外の!を置換します
		sub!(/!(?!?)/, 'っっっ!!!')
		sub!('!?', 'ーーーーっっっつつつ!!!???')
		sub!('、', 'っ!')
		sub('。', 'っ!!')
	end
end
  1. 気合を入れるフィールドを追加する ==============================

モデルに acts_as_kiai を追加すると気合を入れる対象の文字列が格納されるフィールド kiai_text_field が使えるようにします。

lib/acts_as_kiai_test.rbにテストを追加します。

require 'test_helper'

class ActsAsKiaiTest < ActiveSupport::TestCase
  test "truth" do
    assert_kind_of Module, ActsAsKiai
  end

  test "kiai_text_fieldでTweetモデルのtextフィールドが返ること" do
  	assert_equal 'text', Tweet.kiai_text_field
	end

	test "kiai_text_fieldでArticleモデルのcontentフィールドが返ること" do
		assert_equal 'content', Article.kiai_text_field
	end
	
end

テストを実行します。

 $ rake test
Loaded Suite test/dummy/config/environments,test,test/dummy/app/controllers,test/dummy/app/helpers,test/dummy/config,test/dummy/config/initializers

Started at 2013-12-14 19:40:31 +0900 w/ seed 7417.

ActsAsKiaiTest
    ERROR (0:00:00.186) test_kiai_text_fieldでArticleモデルのcontentフィールドが返ること
          uninitialized constant ActsAsKiaiTest::Article
        @ test/acts_as_kiai_test.rb:13:in `block in <class:ActsAsKiaiTest>'


    ERROR (0:00:00.188) test_kiai_text_fieldでTweetモデルのtextフィールドが返ること
          uninitialized constant ActsAsKiaiTest::Tweet
        @ test/acts_as_kiai_test.rb:9:in `block in <class:ActsAsKiaiTest>'


     PASS (0:00:00.189) test_truth

(中略)

Finished in 0.191766 seconds.

7 tests, 5 passed, 0 failures, 2 errors, 0 skips, 5 assertions

Tweetクラス、Articleクラスがないのでテストに失敗しました。

rails g modelでモデルを作成してマイグレーションします。

コマンドは test/dummy に移動して実行します。

$ cd test/dummy/
$ rails g model Tweet text:string
$ rails g model Article content:string
$ rake db:migrate
$ rake db:test:prepare

acts_as_kiaiディレクトリに戻ってテストを実行します。

$ cd ../..
$ rake test
Started at 2013-12-14 19:44:53 +0900 w/ seed 5760.

ActsAsKiaiTest
    ERROR (0:00:00.216) test_kiai_text_fieldでArticleモデルのcontentフィールドが返ること
          undefined method `kiai_text_field' for Article(Table doesn't exist):Class
        @ /Users/inoue/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activerecord-4.0.2/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
          test/acts_as_kiai_test.rb:13:in `block in <class:ActsAsKiaiTest>'

    ERROR (0:00:00.219) test_kiai_text_fieldでTweetモデルのtextフィールドが返ること
          undefined method `kiai_text_field' for Tweet(Table doesn't exist):Class
        @ /Users/inoue/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/activerecord-4.0.2/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
          test/acts_as_kiai_test.rb:9:in `block in <class:ActsAsKiaiTest>'

     PASS (0:00:00.221) test_truth

(中略)

7 tests, 5 passed, 0 failures, 2 errors, 0 skips, 5 assertions

kiai_text_fieldが見つからずにテストが失敗します。

lib/acts_as_kiai.rbacts_as_kiaiメソッドを追加してみます。

ここがポイントになります。

# lib/acts_as_kiai.rb

require 'acts_as_kiai/core'

module ActsAsKiai

	extend ActiveSupport::Concern

	included do
	end

	module ClassMethods
		def acts_as_kiai(options = {})
			cattr_accessor :kiai_text_field
			self.kiai_text_field = (field||:text).to_s
		end
	end
	
end

ActiveRecord::Base.send :include, ActsAsKiai

extend ActiveSupport::Concernは Rails4 で追加された機能です。

extendActiveSupport::Concernのインスタンスメソッドをselfの特異メソッドとして追加しています。

特異メソッドとは、あるオブジェクトにだけ存在するメソッドのことです。

ActiveSupport::Concernは、モジュールのスコープを起動元にして処理します。これによりスコープを合わせるためのコード量が減り、可読性が向上します。

included do は、ActiveSupport::Concernで定義されるメソッドで、最終的に Cencernappend_futuresメソッドでこのブロックに記載したコードが評価されます。

module ClassMethodsのブロックでクラスメソッドを定義します。

def acts_as_kiaiで気合を入れる対象となるフィールドを設定します。

cattr_accessor :kiai_text_fieldkiai_text_fieldへのアクセスを可能にしています。

self.kiai_text_field = (field||:text).to_s でフィールドを設定しています。fieldに指定がなければ、初期値はtextフィールドに設定されます。

テストを実行してみます。

$ rake test
Started at 2013-12-14 20:00:11 +0900 w/ seed 55794.

ActsAsKiaiTest
     PASS (0:00:00.006) test_kiai_text_fieldでArticleモデルのcontentフィールドが返ること
     PASS (0:00:00.008) test_kiai_text_fieldでTweetモデルのtextフィールドが返ること
     PASS (0:00:00.008) test_truth

(中略)

7 tests, 7 passed, 0 failures, 0 errors, 0 skips, 7 assertions

無事テストが通りました。

  1. 保存時に気合をいれる ===================

保存の直前before_saveで気合が入るようにします。

テストを追加します。

 # test/acts_as_kiai_test.rb

	test "Tweetを保存すると気合が入ること" do
		tweet = Tweet.new
		tweet.text = "こんにちわ、私の名前は山田花子です。・・・やめてください、嫌です!そんな!?"
		tweet.save

		assert_equal "こんにちわっ!私の名前は山田花子ですっ!!・・・やめてくださいっ!嫌ですっっっ!!!そんなーーーーっっっつつつ!!!???", tweet.text
	end

	test "Articleを保存すると気合が入ること" do
		article = Article.new
		article.content = "え、なに!?あ!そういうことか。"
		article.save

		assert_equal "えっ!なにーーーーっっっつつつ!!!???あっっっ!!!そういうことかっ!!", article.content
	end	

rake testでテストが失敗します。

実装を続けます。include doのブロックを追記します。

 # lib/acts_as_kiai.rb
 
	included do
		before_save do
			# 現在の値を取得して
			string = read_attribute(self.class.kiai_text_field)
			# 気合を入れて書き込む
			write_attribute(self.class.kiai_text_field, string.to_kiai)
		end
	end

テストを実行します。

$ rake test

Started at 2013-12-15 11:28:47 +0900 w/ seed 17629.

ActsAsKiaiTest
     PASS (0:00:00.046) test_Articleを保存すると気合が入ること
     PASS (0:00:00.058) test_Tweetを保存すると気合が入ること
     PASS (0:00:00.058) test_kiai_text_fieldでArticleモデルのcontentフィールドが返ること
     PASS (0:00:00.059) test_kiai_text_fieldでTweetモデルのtextフィールドが返ること
     PASS (0:00:00.059) test_truth


(中略)

8 tests, 8 passed, 0 failures, 0 errors, 0 skips, 8 assertions

テストが通りました。

以上でプラグインの実装が完了しました。次にこのプラグインを公開してみましょう。

6. acts_as_kiaiを公開する

acts_as_kiai.gemspec.rbにプラグインの情報を記入します。

 # acts_as_kiai.gemspec.rb

$:.push File.expand_path("../lib", __FILE__)

 # Maintain your gem's version:
require "acts_as_kiai/version"

 # Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
  s.name        = "acts_as_kiai"
  s.version     = ActsAsKiai::VERSION
  s.authors     = ["Tomoyuki Inoue"]
  s.email       = ["tomoyuki.inoue@gmail.com"]
  s.homepage    = "https://github.com/tomoyukiinoue/acts_as_kiai"
  s.summary     = "気合を入れて保存できるプラグインです"
  s.description = "acts_as_kiaiを指定したモデルのtextフィールドに対して、保存時に文字列が置換され、気合が入るようになります。"
  s.licenses = Dir["MIT-LICENSE"]

  s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.md"]
  s.test_files = Dir["test/**/*"]

  s.add_dependency "rails", "~> 4.0.2"

  s.add_development_dependency "sqlite3"
end

README.mdにgithubの最初に表示される情報を記入します。

gem build acts_as_kiai.gemspec コマンドでビルドします。

$ gem build acts_as_kiai.gemspec 
  Successfully built RubyGem
  Name: acts_as_kiai
  Version: 0.0.1
  File: acts_as_kiai-0.0.1.gem

Githubにプッシュします。

$ git init
$ hub create acts_as_kiai
$ git add .
$ git commit -m "first commit"
$ git push origin master

以下のアドレスに登録されました。

https://github.com/tomoyukiinoue/acts_as_kiai

  • hubコマンドはgithubと連携する便利なコマンドです。ない場合はbrew install hubでインストールしておきましょう。

RubyGemsに登録します。

$ gem push acts_as_kiai-0.0.1.gem 
(Emailとパスワードを入力)
Signed in.
Pushing gem to https://rubygems.org...
Successfully registered gem: acts_as_kiai (0.0.1)

以下のアドレスに登録されました。

https://rubygems.org/gems/acts_as_kiai

これで、世界の皆さんが気合を入れることができるようになりました。

view raw gistfile1.md hosted with ❤ by GitHub

2013年12月8日日曜日

Mac OS X 10.9 のRails 4.0.0を4.0.2にアップデートしたときのメモ

Mac OS X 10.9 のRails 4.0.0を4.0.2にアップデートしたときのメモ

現在のバージョンをチェック

$ rails --version
Rails 4.0.0
$ rake --version
rake, version 10.1.0
$ gem --version
2.0.3
$ ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
$ rbenv --version
rbenv 0.4.0
$ ruby-build --version
ruby-build 20130628

Homebrewをアップデート

しばらく Homebrewをアップデートしていなかったので、brew updateでアップデートしておきます。

$ brew update
Error: undefined method `to_sym' for nil:NilClass
Please report this bug:
    https://github.com/mxcl/homebrew/wiki/troubleshooting
/usr/local/Library/Homebrew/cmd/update.rb:103:in `report'
/usr/local/Library/Homebrew/cmd/update.rb:101:in `each_line'
/usr/local/Library/Homebrew/cmd/update.rb:101:in `report'
/usr/local/Library/Homebrew/cmd/update.rb:23:in `update'
/usr/local/Library/brew.rb:95:in `send'
/usr/local/Library/brew.rb:95

エラーで完了しないので brew doctor で原因を確認します。

$ brew doctor
Warning: /usr/local/share/python is not needed in PATH.
Formerly homebrew put Python scripts you installed via `pip` or `pip3`
(or `easy_install`) into that directory above but now it can be removed
from your PATH variable.
Python scripts will now install into /usr/local/bin.
You can delete anything, except 'Extras', from the /usr/local/share/python
(and /usr/local/share/python3) dir and install affected Python packages
anew with `pip install --upgrade`.

Warning: No developer tools installed.
You should install the Command Line Tools.
Run `xcode-select --install` to install them.

運良くコマンドラインツールが入っていないことが原因と分かりました。アドバイス通りに xcode-select --install を実行します。

$ xcode-select --install
xcode-select: note: install requested for command line developer tools

コマンドラインツールをインストールするGUIが起動します。指示に従ってインストールします。

インストールが完了したら、再度、brew updateを実行します。

$ brew update
Already up-to-date.

最新の状態なら上記の表示、そうでなければ Homebrew がアップデートされます。

ruby-buildをアップデート

ruby-buildをアップデートします。

$ brew upgrade ruby-build
==> Upgrading 1 outdated package, with result:
ruby-build 20131206
==> Upgrading ruby-build
==> Installing ruby-build dependency: libyaml
==> Downloading http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/libyaml/0.1.4
==> make install
🍺  /usr/local/Cellar/libyaml/0.1.4: 7 files, 344K, built in 31 seconds
==> Installing ruby-build
==> Downloading https://github.com/sstephenson/ruby-build/archive/v20131206.tar.gz
######################################################################## 100.0%
==> ./install.sh
🍺  /usr/local/Cellar/ruby-build/20131206: 98 files, 432K, built in 6 seconds

アップデートされているか確認します。2.0.0-p353があればOK(2013/12/08現在)。

$ ruby-build --version
ruby-build 20131206
$ rbenv install --list | grep -e "  2"
  2.0.0-dev
  2.0.0-p0
  2.0.0-p195
  2.0.0-p247
  2.0.0-p353
  2.0.0-preview1
  2.0.0-preview2
  2.0.0-rc1
  2.0.0-rc2
  2.1.0-dev
  2.1.0-preview1
  2.1.0-preview2

Ruby をアップデート

rbenv で2.0.0-p353をインストールします。少し時間がかかりますので気長に待ちましょう。

$ rbenv install 2.0.0-p353
Downloading openssl-1.0.1e.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/66bf6f10f060d561929de96f9dfe5b8c
Installing openssl-1.0.1e...
Installed openssl-1.0.1e to /Users/inoue/.rbenv/versions/2.0.0-p353

Downloading ruby-2.0.0-p353.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/78282433fb697dd3613613ff55d734c1
Installing ruby-2.0.0-p353...
Installed ruby-2.0.0-p353 to /Users/inoue/.rbenv/versions/2.0.0-p353

rbenv で ruby のバージョンを切り替えます。

$ rbenv global 2.0.0-p353
~ $ ruby --version
ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin13.0.0]

Rake をアップデート

Ruby アップデート直後に、0.9.6 にバージョンダウンしてしまいました。Rails 4 では、いろいろ不都合を起こすので Rake を 10.x 系の最新にアップデートします。

$ gem --version
2.0.14
$ rake --version
rake, version 0.9.6

gem update で RubyGemsをアップデートします。途中、Rake、Rdoc, ri を上書きするか聞かれるので y で進めます。

$ gem update
(中略)
Updating rake
Fetching: rake-10.1.0.gem (100%)
rake's executable "rake" conflicts with /Users/inoue/.rbenv/versions/2.0.0-p353/bin/rake
Overwrite the executable? [yN]  y
(中略)
Updating rdoc
Fetching: rdoc-4.0.1.gem (100%)
rdoc's executable "rdoc" conflicts with /Users/inoue/.rbenv/versions/2.0.0-p353/bin/rdoc
Overwrite the executable? [yN]  y
rdoc's executable "ri" conflicts with /Users/inoue/.rbenv/versions/2.0.0-p353/bin/ri
Overwrite the executable? [yN]  y
(中略)

Rakeが10.1.0にアップデートされます。

$ rake --version
rake, version 10.1.0

Rails をアップデート

RubyGems で Rails をアップデートします。

$ gem install rails --no-ri --no-rdoc
(中略)
Fetching: rails-4.0.2.gem (100%)
Successfully installed rails-4.0.2
28 gems installed

Rails が 4.0.2 にアップデートされました。

$ rails --version
Rails 4.0.2

Rails の動作確認

$ rails new blog && cd blog
      create  
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
(中略)

$ rails s
=> Booting WEBrick
=> Rails 4.0.2 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2013-12-08 09:24:44] INFO  WEBrick 1.3.1
[2013-12-08 09:24:44] INFO  ruby 2.0.0 (2013-11-22) [x86_64-darwin13.0.0]
[2013-12-08 09:24:44] INFO  WEBrick::HTTPServer#start: pid=87119 port=3000

適当なブラウザで http//localhost:3000 にアクセスしていつもの画面が出てくれば完了です。

view raw gistfile1.md hosted with ❤ by GitHub

2013年7月1日月曜日

Rails4.0とRuby2.0をMountain Lionにインストール

Ruby-2.0.0p247でOpenSSLのコンパイルエラーがなくなったみたいです。Rails 4.0をGemでインストールする前にRdocをアップデートしておくと吉。
$ brew upgrade rbenv
$ rbenv -v
rbenv 0.4.0
$ brew upgrade ruby-build
$ ruby-build --version
ruby-build 20130628
$ rbenv install --list | grep 2.0.0-p
2.0.0-p0
2.0.0-p195
2.0.0-p247
2.0.0-preview1
2.0.0-preview2
$ rbenv install 2.0.0-p247
$ rbenv versions
system
* 1.9.3-p194 (set by /Users/inoue/.rbenv/version)
2.0.0-p247
$ rbenv global 2.0.0-p247
$ rbenv rehash
$ rbenv version
2.0.0-p247 (set by /Users/inoue/.rbenv/version)
$ gem -v
2.0.3
### https://github.com/rdoc/rdoc/issues/190
$ gem install rdoc
Fetching: rdoc-4.0.1.gem (100%)
rdoc's executable "rdoc" conflicts with /Users/inoue/.rbenv/versions/2.0.0-p247/bin/rdoc
Overwrite the executable? [yN] y
rdoc's executable "ri" conflicts with /Users/inoue/.rbenv/versions/2.0.0-p247/bin/ri
Overwrite the executable? [yN] y
...
Successfully installed rdoc-4.0.1
Parsing documentation for rdoc-4.0.1
Installing ri documentation for rdoc-4.0.1
1 gem installed
$ rbenv rehash
$ gem install rails
...
28 gems installed
$ rbenv rehash
$ rails -v
Rails 4.0.0
$ rails new myapp
$ cd myapp/
myapp $ rails s
=> Booting WEBrick
=> Rails 4.0.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2013-07-01 22:28:14] INFO WEBrick 1.3.1
[2013-07-01 22:28:14] INFO ruby 2.0.0 (2013-06-27) [x86_64-darwin12.4.0]
[2013-07-01 22:28:14] INFO WEBrick::HTTPServer#start: pid=46016 port=3000
### Access http://localhost:3000 on your browser

2013年1月11日金曜日

Rails 3.2.11へのアップデート方法メモ(緊急)

$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.2.0]
$ gem -v
1.8.23
$ rails -v
Rails 3.2.8
$ gem update --system
$ gem -v
1.8.24
$ gem update rails
$ rbenv rehash
$ gem uninstall rails
Select gem to uninstall:
1. rails-3.2.8
2. rails-3.2.11
3. All versions
> 1
Successfully uninstalled rails-3.2.1
$ rm Gemfile.lock
$ vim Gemfile
gem 'rake', '0.9.2.2'
gem 'rails', '3.2.11'
# 以下はある人だけ
gem 'twitter-bootstrap-rails','2.1.5'
gem 'capistrano','2.13.4'
$ bundle install
$ rails -v
Rails 3.2.11
view raw gistfile1.sh hosted with ❤ by GitHub

2012年12月18日火曜日

Django 1.4の日本語ドキュメントをビルドするメモ

# Install sphinx by easy_install
$ sudo easy_install sphinx
# Clone django-docs-ja from github
$ git clone git://github.com/django-docs-ja/django-docs-ja.git
$ cd django-docs-ja
$ make html
$ open _build/html/index.html

2012年12月16日日曜日

Mountain Lion に Django をインストールするメモ

# Install Python 2.7.3 via Homebrew
$ brew install python
$ echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
$ python --version
Python 2.7.3
# Install Django 1.4.3 by easy_install
$ sudo easy_install django
$ sudo easy_install virtualenv
$ sudo easy_install virtualenvwrapper
$ sudo easy_install pip
$ echo 'export PATH=/usr/local/share/python:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
# Setup mysite
$ django-admin.py startproject mysite
$ cd mysite
$ python manage.py runserver
# Access http://localhost:8000 from your browser.
view raw gistfile1.sh hosted with ❤ by GitHub

2012年10月14日日曜日

Mac OS X Mountain Lion (10.8.2) に Rails 3.2.8 をインストールする

約100日ぶりの更新です。
RailsとiOS/Androidアプリとクラウド3点セットのお仕事が増えてきましたので、少しNode.jsから離れて、更新を続けようと思います。

Moutain LionにRailsをインストールしたときの作業のログです。
Rubyのバージョン管理ツールにrbenvを使用しています。

事前準備

  • AppStoreでXcode 4.5.1 をインストールしておく
  • Xcode 4.5.1の設定からCommand Line Tools をインストールしておく

Homebrewをインストールする

$ ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
$ brew doctor
Your system is raring to brew.

rbenvをインストールする

$ brew install rbenv

.bash_profileを編集して以下の一行を追加します。

$ vim ~/.bash_profile
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

再読込を忘れずに

$ source ~/.bash_profile

ruby-buildをインストール

rbenv install -l でインストール可能なバージョンのリストが表示されればOKです。

$ brew install ruby-build
$ rbenv install -l
Available versions:
1.8.6-p383
1.8.6-p420
1.8.7-p249
1.8.7-p302
...
1.9.3-p0
1.9.3-p125
1.9.3-p194
1.9.3-preview1

Rubyをインストールする

$ rbenv install 1.9.3-p194
$ rbenv versions
1.9.3p194
$ rbenv global 1.9.3-p194
$ rbenv rehash
$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.2.0]
$ which ruby
/Users/inoue/.rbenv/shims/ruby
view raw 06_install_ruby hosted with ❤ by GitHub

使用しているrubyのバージョンが1.9.3-p194でパスが変更されていればOK。

Railsをインストールする

$ gem install rails
$ source ~/.bash_profile
$ rails -v
Rails 3.2.8

Railsアプリを作成する

$ rails new helloworld
$ cd helloworld/
$ rails s
=> Booting WEBrick
=> Rails 3.2.8 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-10-14 12:51:43] INFO WEBrick 1.3.1
[2012-10-14 12:51:43] INFO ruby 1.9.3 (2012-04-20) [x86_64-darwin12.2.0]
[2012-10-14 12:51:43] INFO WEBrick::HTTPServer#start: pid=28949 port=3000

ブラウザから http://localhost:3000/ にアクセスして以下の画面が表示されたRailsのインストールは完了です。