“Ruby on Rails” with Windows7

Railsを使ってみました。

<僕が使っている環境>
ruby 2.0.0p247 (64bit)
DevKit-mingw64-64-4.7.2-20130224-1432-sfx (64bit)
rails 3.2.14
Windows7 (64bit)


(1)はじめに
はじめ、Rails 4.0を使ってみようと思ったんですが、エラーが出てうまくいきませんでした。atomicというライブラリがインストールできなくて、ストップしてる。

>gem install rails -v 4.0.0
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing rails:
        ERROR: Failed to build gem native extension.

    C:/work_Apps/Ruby200-x64/bin/ruby.exe extconf.rb
creating Makefile

make "DESTDIR="
generating atomic_reference-x64-mingw32.def
compiling atomic_reference.c
atomic_reference.c: In function 'ir_compare_and_set':
atomic_reference.c:75:2: error: #error No CAS operation available for this platform
make: *** [atomic_reference.o] Error 1

Gem files will remain installed in C:/work_Apps/Ruby200-x64/lib/ruby/gems/2.0.0/gems/atomic-1.1.14 for inspection.
Results logged to C:/work_Apps/Ruby200-x64/lib/ruby/gems/2.0.0/gems/atomic-1.1.14/ext/gem_make.out

いろいろ調べてみたけど、Win7(64bit)がダメというわけでは無さそう。

gemのバージョンが2.0.3以上でないとダメという情報を見つけたけど、僕の環境ではgem2.0.3になっていたので、大丈夫なはず。

ためしにRuby(32bit)でRailsインストールしてみたけど、同じエラーがでる。
しかたなく、Rails3.xxにしてみたら、インストールできました。

というわけで、今回はRails4.xxをあきらめて、Rails3.xxをつかうことにしました。


(2)Ruby、DevKitダウンロード
Rubyのホームページに行きます
オブジェクト指向スクリプト言語 Ruby

「ダウンロード」の「Windows版Rubyバイナリ」から、
One-Click Ruby Installer for Windows を選びます。
ruby01

RubyInstaller for Windows のページでDownloadをクリック。

今回は、Installer版を使わずに、Archives版を使います。なぜかというと、今後、異なるバージョンのRubyを使う可能性があるため、システム環境変数をいじられたくないから。
DevKitも必要になるため、ダウンロードしておきます。

ファイル名:
ruby-2.0.0-p247-x64-mingw32.7z
DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe
ruby02


(3)Ruby、DevKitインストール
まずRubyインストールします。と言っても、ファイルruby-2.0.0-p247-x64-mingw32.7z を展開し、任意の場所に配置するだけです。

(参考)7z圧縮ファイルの解凍は、僕の場合7-Zip File Managerを使っています。
7-Zip

さて、Rubyインストール先として僕の場合、
C:\work_Apps\Ruby\ruby-2.0.0-p247-x64-mingw32
としました。

Rubyの動作確認します。コマンドプロンプトでPath設定してから、バージョン確認してみます。gemのバージョン確認もしておきます。

>set path="C:\work_Apps\Ruby\ruby-2.0.0-p247-x64-mingw32\bin";%path%

>
>ruby -v
ruby 2.0.0p247 (2013-06-27) [x64-mingw32]

>gem -v
2.0.3

次にDevKitをインストールします。(これがないと、Railsのインストール時にエラーで止まります。)
exeファイルを実行すると、カレントディレクトリに多くのファイルが展開されます。そのため、僕の場合、以下のフォルダを先に作成してそこに展開することにしました。
C:\work_Apps\Ruby\DevKit-mingw64-64-4.7.2-20130224-1432-sfx

そのうえで、DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe を実行します。ファイルの展開がすんだら、exeファイルは不要になるので、削除しておきます。

次に、DevKitの「dk.rb initを実行」します。すると、DevKitのフォルダにconfig.ymlが作成されます。

>cd C:\work_Apps\Ruby\DevKit-mingw64-64-4.7.2-20130224-1432-sfx

C:\~(省略)~ >ruby dk.rb init

Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.

次に、config.ymlに、Rubyのパスを設定します。

  : (中略) :

# Example:
#
# ---
# - C:/ruby19trunk
# - C:/ruby192dev
#
---
- C:\work_Apps\Ruby\ruby-2.0.0-p247-x64-mingw32

次に、「dk.rb install」を実行します。

>cd C:\work_Apps\Ruby\DevKit-mingw64-64-4.7.2-20130224-1432-sfx

C:\~(省略)~ >ruby dk.rb install

[INFO] Updating convenience notice gem override for 'C:\work_Apps\Ruby\ruby-2.0.0-p247-x64-mingw32'
[INFO] Installing 'C:\work_Apps\Ruby\ruby-2.0.0-p247-x64-mingw32/lib/ruby/site_ruby/devkit.rb'

これで、DevKitインストールが環境です。

DevKitを展開したフォルダ(C:\work_Apps\Ruby\DevKit-mingw64-64-4.7.2-20130224-1432-sfx)は、削除してしまっていいのかもしれないけど、よくわからないので、とりあえずそのまま残しています。


(4)Railsインストール
現時点での最新版をバージョン指定して、インストールすることにします。29個のgemがインストールされました。gem list でrailsのバージョンを確認しておきます。

>gem install rails -v 3.2.14
: (中略) :
Installing ri documentation for bundler-1.3.5
Parsing documentation for rails-3.2.14
Installing ri documentation for rails-3.2.14
29 gems installed

>gem list

*** LOCAL GEMS ***

actionmailer (3.2.14)
actionpack (3.2.14)
: (中略) :
rails (3.2.14)
railties (3.2.14)
rake (0.9.6)
rdoc (4.0.0, 3.12.2)
sprockets (2.2.2)
test-unit (2.0.0.0)
: (中略) :

これでRailsインストール完了しました。


(5)Railsアプリ起動
Rails動作確認のため、簡単なアプリを起動してみます。Rails動作確認が目的なので、DBは内蔵されているsqliteを使う設定のままにしておきます。

まず、アプリ作成用の適当な場所を決めます。
僕の場合、Rails_Appsというフォルダを作成して、その中にRailsアプリを置くことにしました。
C:\work_Apps\Ruby\Rails_Apps

次に、Railsアプリ作成ディレクトリに移動して、アプリ作成します。(僕の場合、システム環境設定でPath設定していないので、コマンドでPath設定追加しています)

>set path="C:\work_Apps\Ruby\ruby-2.0.0-p247-x64-mingw32\bin";%path%
>cd C:\work_Apps\Ruby\Rails_Apps
C:\work_Apps\Ruby\Rails_Apps>rails new test01
      create
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
     : (中略) :
Installing sass-rails (3.2.6)
Installing uglifier (2.2.1)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

アプリ起動してみます。アプリのディレクトリに移動して、起動コマンドを実行します。

>cd test01

C:\work_Apps\Ruby\Rails_Apps\test01>rails server
=> Booting WEBrick
=> Rails 3.2.14 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2013-09-24 02:52:54] INFO  WEBrick 1.3.1
[2013-09-24 02:52:54] INFO  ruby 2.0.0 (2013-06-27) [x64-mingw32]
[2013-09-24 02:52:54] INFO  WEBrick::HTTPServer#start: pid=9140 port=3000
[2013-09-24 02:53:24] ERROR LoadError: Please install the sqlite3 adapter: `gem install activerecord-sqlite3-adapter` (sqlite3 is not part of the bundle. Add it to Gemfile.)
        C:/work_Apps/Ruby/ruby-2.0.0-p247-x64-mingw32/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/rubygems_integration.rb:214:in `block in replace_gem'
        C:/work_Apps/Ruby/ruby-2.0.0-p247-x64-mingw32/lib/ruby/gems/2.0.0/gems/activerecord-3.2.14/lib/active_record/connection_adapters/sqlite3_adapter.rb:3:in `'
     : (中略) :

なんかエラーが出ました。sqlite3が使えないというエラーです。
とりあえずアプリ起動はできていますが、DBへのアクセスができない、という状態です。
ruby03

このエラーの原因としては、どうもバグっぽい。Windows上でRuby(64Bit)を使っているときにおこる?みたい。
解決法としては、以下2つを行います。
・Gemfile.lockの修正
・sqlite3のインストール
(参考)Ruby 2.0.0 – Rails 4.0 に SQLite3 をインストールしたときのメモ [Windows] | superable

まず、アプリのディレクトリ内にあるGemfile.lockを修正します。
C:\work_Apps\Ruby\Rails_Apps\test01\Gemfile.lock

sqlite3 (1.3.8-x86-mingw32) をx64に修正します

  : (中略) :

      multi_json (~> 1.0)
      rack (~> 1.0)
      tilt (~> 1.1, != 1.3.0)
    sqlite3 (1.3.8-x64-mingw32)
    thor (0.18.1)
    tilt (1.4.1)
    treetop (1.4.15)

  : (中略) :

この時点で、Railsアプリ起動しようとしても、sqlite3が無いってエラーが出ます。gem listで確認すると確かにsqlite3がインストールされていませんでした。そのため、sqlite3を手動インストールしました。

C:\work_Apps\Ruby\Rails_Apps\test01>rails server
Could not find sqlite3-1.3.8-x64-mingw32 in any of the sources
Run `bundle install` to install missing gems.

C:\work_Apps\Ruby\Rails_Apps\test01>gem list sqlite3

*** LOCAL GEMS ***

C:\work_Apps\Ruby\Rails_Apps\test01>gem install sqlite3
Fetching: sqlite3-1.3.8-x64-mingw32.gem (100%)
Successfully installed sqlite3-1.3.8-x64-mingw32
Parsing documentation for sqlite3-1.3.8-x64-mingw32
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/sqlite3/2.0/sqlite3_native.so, skipping
Installing ri documentation for sqlite3-1.3.8-x64-mingw32
1 gem installed

C:\work_Apps\Ruby\Rails_Apps\test01>gem list sqlite3

*** LOCAL GEMS ***

sqlite3 (1.3.8 x64-mingw32)

あらためて、Railsアプリ起動してみます。

C:\work_Apps\Ruby\Rails_Apps\test01>rails server
=> Booting WEBrick
=> Rails 3.2.14 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2013-09-24 03:07:39] INFO  WEBrick 1.3.1
[2013-09-24 03:07:39] INFO  ruby 2.0.0 (2013-06-27) [x64-mingw32]
[2013-09-24 03:07:39] INFO  WEBrick::HTTPServer#start: pid=7248 port=3000

初期画面を確認してみます。アプリの環境情報が見れるようになりました。

http://localhost:3000/
ruby04


(6)Railsの、コントローラ、Viewをお試し
本格的にアプリ作成する前に、DBアクセスなしで、ちょこっと練習してみます。

まずはコントローラ作成します。

「(Railsアプリケーションのルート)」ディレクトリに移動し、次のようにコマンドを実行します。コントローラ名は、sampleにしています。

 C:\work_Apps\Ruby\Rails_Apps\test01>rails generate controller sample
      create  app/controllers/sample_controller.rb
      invoke  erb
      create    app/views/sample
      invoke  test_unit
      create    test/functional/sample_controller_test.rb
      invoke  helper
      create    app/helpers/sample_helper.rb
      invoke    test_unit
      create      test/unit/helpers/sample_helper_test.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/sample.js.coffee
      invoke    scss
      create      app/assets/stylesheets/sample.css.scss

sample_controller.rbを編集します。
test01\app\controllers\sample_controller.rb

# coding: utf-8

class SampleController < ApplicationController

  def hello
    @msg = 'こんにちは。お久しぶりです。';
    render "sample/hello"
  end

  def bye
    render :text => 'bye!'
  end

end

次にビュー作成します。hello.html.erbファイルを自分で作成します。(文字コードUTF8、改行コードLF)
test01\app\views\sample\hello.html.erb

<h1>Hello</h1>
<p>
こんにちは。お元気ですか。<br>
<%= @msg %>
</p>

次に、ルーティング追加します。routes.rbファイルを修正します。
test01\config\routes.rb

以下の2行追加しています。

  (中略)

  # This is a legacy wild controller route that's not recommended for RESTful applications.
  # Note: This route will make all actions in every controller accessible via GET requests.
  # match ':controller(/:action(/:id))(.:format)'

  match 'hello' => 'sample#hello'
  match 'bye' => 'sample#bye'

end

コマンド「rails server」でアプリ起動した後、画面確認してみます。

http://localhost:3000/hello
ruby05

http://localhost:3000/bye
ruby06

ようやくこれで、完了です。

Advertisements

One thought on ““Ruby on Rails” with Windows7

  1. Pingback: Ruby on RailsをWindows8.1に設定しました。 | BackgroundLog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s