yucatio@システムエンジニア

趣味で作ったものいろいろ

Railsのインストール

Rubyのバージョンアップ、bundlerのインストールも終わったのでRailsのインストールをします。

インストールするRailsのバージョン決定

参考にしている" パーフェクトRuby on Rails" では、Rubyのバージョン2.1.2とRailsバージョン4.1.1を利用していますがなるべく新しいバージョン使っておいた方が後が楽な気がするので参考書とは別バージョンで開発を進めます。

Ruby gems のページを見ると、最新の安定板が4.2.6、rc版が5.0.0.rc1となっています(2016年5月27日現在)。 バージョン5も気になるところですが、今回は4.2.6をインストールします。

All versions of rails | RubyGems.org | your community gem host

Railsのインストール

gemコマンドでインストールします。関連するライブラリが多いので13分かかりました。

$ gem install rails -v 4.2.6
Fetching: rack-1.6.4.gem (100%)
Successfully installed rack-1.6.4
Fetching: concurrent-ruby-1.0.2.gem (100%)
Successfully installed concurrent-ruby-1.0.2
# 中略
Installing ri documentation for mail-2.6.4
Parsing documentation for actionmailer-4.2.6
Installing ri documentation for actionmailer-4.2.6
Parsing documentation for rails-4.2.6
Installing ri documentation for rails-4.2.6
Done installing documentation for rack, concurrent-ruby, sprockets, thread_safe, tzinfo, i18n, activesupport, mini_portile2, nokogiri, loofah, rails-html-sanitizer, rails-deprecated_sanitizer, rails-dom-testing, rack-test, erubis, builder, actionview, actionpack, sprockets-rails, thor, railties, arel, activemodel, activerecord, globalid, activejob, mime-types-data, mime-types, mail, actionmailer, rails after 778 seconds
31 gems installed
パーフェクトRuby on Rails

パーフェクトRuby on Rails
著者:すがわらまさのり
価格:3,110円(税込、送料込)
楽天ブックスで詳細を見る

環境

  • OS : Mac OS X バージョン 10.8.4
  • Ruby バージョン 2.3.1

関連記事

yucatio.hatenablog.com

yucatio.hatenablog.com

全出力

gem install rails -v 4.2.6 したときの全出力を記録のために残しておきます

続きを読む

bundlerのインストールと初期設定

Rubyを無事インストールできたので、次はbundlerをインストールします

yucatio.hatenablog.com

パッケージ管理とは

パッケージ管理とは、使用するライブラリ(ある機能のソースファイルの集まり)をインストール、更新するための機能です。 Rubyではgemコマンドでライブラリをインストール、更新できます。

さらに、あるライブラリがさらに他のライブラリを必要としていた場合、自動で必要なライブラリをインストールしてくれます。 この機能を使わないと、以下のようになります (実体験)

  1. 便利なライブラリAを見つけた!ダウンロードして使おう
  2. クラスZが見つからないエラー発生。ライブラリAで使われているようだ
  3. クラスZはライブラリBに入っているそうなので、ライブラリBをダウンロード
  4. プログラム再実行
  5. クラスYが見つからないエラー発生。ライブラリBで使われているようだ
  6. クラスYはライブラリCに入っているそうなので、ライブラリCをダウンロード
  7. プログラム再実行
  8. 以下繰り返し

gemとbundler

gemでコンピュータにライブラリをインストールできます。 インストールされたライブラリはコンピュータ内に存在するすべてのプログラムから利用することができます。 gemはPHPPEARにあたります。

しかし、1つ問題があります。1つのコンピュータで使用できるライブラリのバージョンが1つに限られてしまいます。 例えば、アプリAではライブラリXのバージョン1.3.4を使用しているのにアプリBではバージョン2.8.1が必要という場合にどちらかのバージョンしか使えないという問題に出くわします。 新しい方のバージョンに合わせられればよいのですが、バージョンをあげることで挙動が変わっている場合もあるので、そう簡単にあげられない場合もあります。すでにサービス開始しているアプリの場合は特に。

そこで、アプリ(プロジェクト、プロダクトと呼んだりもする)ごとにどのライブラリのどのバージョンを指定できるかを管理する必要が出てきました。これがbundlerです。 bundlerはphpのComposer, mavendependency管理に相当します。

bundlerのインストールと初期設定

gemコマンドでbundlerをインストールする

下記コマンドを入力します。"1 gem installed" という文字が出てくれば成功です。

$ gem install bundler
Fetching: bundler-1.12.5.gem (100%)
Successfully installed bundler-1.12.5
Parsing documentation for bundler-1.12.5
Installing ri documentation for bundler-1.12.5
Done installing documentation for bundler after 9 seconds
1 gem installed

# コマンドの確認
$ which bundler
/Users/user/.rbenv/shims/bundler

# gemの情報管理場所
$ ls -la ~/.gem
total 0
drwxr-xr-x  3 xxxx  xxxxx  102 May 26 08:42 specs

bundlerの初期設定

# rubyプロジェクトフォルダを作成して移動
$ mkdir -p ~/Ruby/sample01
$ cd       ~/Ruby/sample01

# bundler初期設定
$ bundle init
Writing new Gemfile to /Users/user/Ruby/sample01/Gemfile

ファイルが作成されたので中身を確認してみます

$ cat ~/Ruby/sample01/Gemfile
# frozen_string_literal: true
# A sample Gemfile
source "https://rubygems.org"

# gem "rails"

bundlerでrdefsのインストール

"パーフェクトRuby on Rails"のサンプル通り、試しにrdefsをインストールします

$ cd           ~/Ruby/sample01

# Gemfileにgem rdefsを追記
$ echo 'gem "rdefs"' >> Gemfile
$ cat ~/Ruby/sample01/Gemfile
# frozen_string_literal: true
# A sample Gemfile
source "https://rubygems.org"

# gem "rails"
gem "rdefs"

# Gemfileに書かれているパッケージをインストール
$ bundle install
Fetching gem metadata from https://rubygems.org/
Fetching version metadata from https://rubygems.org/
Resolving dependencies...
Installing rdefs 0.0.2
Using bundler 1.12.5
Bundle complete! 1 Gemfile dependency, 2 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

# Gemfile.lockの確認
$ cat Gemfile.lock
GEM
  remote: https://rubygems.org/
  specs:
    rdefs (0.0.2)

PLATFORMS
  ruby

DEPENDENCIES
  rdefs

BUNDLED WITH
   1.12.5

# bundlerの管理情報
$ ls -l ~/.bundle
drwxr-xr-x  3 xxxx  xxxxx  102 May 26 22:35 cache

bundlerでrdefsの実行

まずは適当なrubyスクリプトを作成します

$ cd ~/Ruby/sample01
$ vi  sample.rb
$ cat sample.rb
class Sample
  def hello
    puts 'hello'
  end
end

rdefsのターゲットに作成したスクリプトを指定します

$ bundle exec rdefs sample.rb
class Sample
  def hello

環境

  • OS : Mac OS X バージョン 10.8.4
  • Ruby バージョン 2.3.1

参考文献

パーフェクトRuby on Rails

パーフェクトRuby on Rails
著者:すがわらまさのり
価格:3,110円(税込、送料込)
楽天ブックスで詳細を見る

make実行時にerror: invalid instruction mnemonic 'adoxq' が発生した原因

開発環境

症状

make実行時にerror: invalid instruction mnemonic 'adcxq' が出る。

下記ログは、rubyのバージョンアップ時にopensslをインストールしており、そのなかでmakeが実行されているもの。

$ rbenv install 2.3.1
Downloading openssl-1.0.2h.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/1d4007e53aad94a5b2002fe045ee7bb0b3d98f1a47f8b2bc851dcd1c74332919
Installing openssl-1.0.2h...

BUILD FAILED (OS X 10.8.4 using ruby-build 20160426-10-g2bd59bd)

Inspect or clean up the working tree at /var/folders/hz/b4j1y31166xchfpzkhmg1_jr0000gn/T/ruby-build.20160508225226.46928
Results logged to /var/folders/hz/b4j1y31166xchfpzkhmg1_jr0000gn/T/ruby-build.20160508225226.46928.log

Last 10 log lines:
 ^~~~~
x86_64-mont.s:1038:2: error: invalid instruction mnemonic 'adcxq'
 adcxq %rax,%r13
 ^~~~~
x86_64-mont.s:1039:2: error: invalid instruction mnemonic 'adoxq'
 adoxq %rbp,%r15
 ^~~~~
make[2]: *** [x86_64-mont.o] Error 1
make[1]: *** [subdirs] Error 1
make: *** [build_crypto] Error 1

原因

Failure to build openssl on OS X 10.9.5 · Issue #44282 · Homebrew/legacy-homebrew · GitHub

ここで書いてある通り、Xcodeコマンドラインツールのバージョンの不一致が原因のようです

間違った手順

Xcodeをインストール

https://developer.apple.com/downloads/?=xcode からインストールできます。

4.6.3をインストールしました

f:id:yucatio:20160518101145p:plain

コマンドラインツールをインストール

Xcode > Preference > Downloads > Components にある Command Line Tools を選択してインストールします

f:id:yucatio:20160518101252p:plain

'The package "DeveloperToolsCLI.pkg" is untrusted." というエラー発生が発生

'The package "DeveloperToolsCLI.pkg" is untrusted." というエラー発生が発生して、コマンドラインツールのインストールができませんでした

f:id:yucatio:20160518101612p:plain

セキュリティレベルを変更

mountain lion - Installing Xcode command line tools error: The package “DeveloperToolsCLI.pkg” is untrusted - Ask Different

こちらを参考に、Macのセキュリティレベルを変更しましたが、今回は効果がありませんでした。

コマンドラインツールをインストール

Xcodeからのインストールはあきらめて、Appleダウンロードサイト https://developer.apple.com/downloads/?=command%20line%20tools からインストールします。

Command Line Tools (OS X Mountain Lion) for Xcode - September 2013 を選択しました。

f:id:yucatio:20160518102242p:plain

参考 : Command Line Tools fail to install OS X Lion 10.7.3 Xcode 4.3 - Ask Different

エラー発生
$ rbenv install 2.3.1
Downloading openssl-1.0.2h.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/1d4007e53aad94a5b2002fe045ee7bb0b3d98f1a47f8b2bc851dcd1c74332919
Installing openssl-1.0.2h...

BUILD FAILED (OS X 10.8.4 using ruby-build 20160426-10-g2bd59bd)

Inspect or clean up the working tree at /var/folders/hz/b4j1y31166xchfpzkhmg1_jr0000gn/T/ruby-build.20160508225226.46928
Results logged to /var/folders/hz/b4j1y31166xchfpzkhmg1_jr0000gn/T/ruby-build.20160508225226.46928.log

Last 10 log lines:
 ^~~~~
x86_64-mont.s:1038:2: error: invalid instruction mnemonic 'adcxq'
 adcxq %rax,%r13
 ^~~~~
x86_64-mont.s:1039:2: error: invalid instruction mnemonic 'adoxq'
 adoxq %rbp,%r15
 ^~~~~
make[2]: *** [x86_64-mont.o] Error 1
make[1]: *** [subdirs] Error 1
make: *** [build_crypto] Error 1

対応

Xcode 4.6.3 に対応するコマンドラインツールが見つからなかったので、別のバージョン(5.1.1)をインストールしました。こちらのバージョンではXcodeのダウンロード画面からインストールすることができました。

yucatio.hatenablog.com

過去バージョンのXcodeの入手方法

前回の続き。 makeコマンドが無かったのでXcodeと付属のコマンドラインツールをインストールしようとしたときの話。

yucatio.hatenablog.com

開発環境

症状

最新のXcodeがダウンロードできない

最新のXcodeはAppStoreからダウンロードできますが、Xcodeを選択してインストール開始したところ、バージョン非対応エラー。そうですよね、こんな古いMacに対応してませんよね。

f:id:yucatio:20160516081911p:plain

対応

さて、ここで選択肢は2つ。

  1. OSをバージョンアップする
  2. 過去バージョンのXcodeを探してインストールする

OSバージョンアップをするべきだとは思うのですが、今まで動いていたアプリが動かなくなるという懸念があるので、今回は見送りました。

過去バージョンのXcodeをダウンロードする

こちらのリンクから探すことが可能です。Xcodeで検索します。詳細を表示して対応バージョンを確認します。

https://developer.apple.com/downloads/?=xcode

バージョン 5.1.1がOS X バージョン 10.8.4(Mountain Lion)に対応しているのでこちらをダウンロードします

f:id:yucatio:20160516083308p:plain

インストールできました

f:id:yucatio:20160516084806p:plain

Macでmake:command not foundとなったときの対処法

開発環境

症状

rubyのインストール中、 makeコマンドが見つからないというエラーが出た

$ rbenv install 2.3.1
Downloading openssl-1.0.2h.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/1d4007e53aad94a5b2002fe045ee7bb0b3d98f1a47f8b2bc851dcd1c74332919
Installing openssl-1.0.2h...

BUILD FAILED (OS X 10.8.4 using ruby-build 20160426)

Inspect or clean up the working tree at /var/folders/hz/b4j1y31166xchfpzkhmg1_jr0000gn/T/ruby-build.20160508134848.45570
Results logged to /var/folders/hz/b4j1y31166xchfpzkhmg1_jr0000gn/T/ruby-build.20160508134848.45570.log

Last 10 log lines:
PROCESSOR    =
RANLIB       =true
ARFLAGS      =
PERL         =/usr/bin/perl
SIXTY_FOUR_BIT_LONG mode
DES_UNROLL used
DES_INT used
RC4_CHUNK is unsigned long
sh: make: command not found
/Users/user/.rbenv/plugins/ruby-build/bin/ruby-build: line 564: make: command not found

whichで確認すると、何も表示されません

$ which make

対応と解決策

パスの確認

まずはパスの確認から。rbenvのインストールでパスを書き換えた際に、コマンドをミスしていないかどうかを確認します。

$ echo $PATH
/Users/user/.rbenv/shims:/Users/user/.rbenv/bin:/Users/user/.rbenv/shims:/Users/user/git/rbenv/bin:/Users/user/.rbenv/shims:/Users/user/git/rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/opt/X11/bin

/usr/bin, /binなどが含まれているので、パスは問題なさそうですね。 makeは通常 /usr/bin/make にインストールされているので、一応確認します

$ ls /usr/bin/make
ls: /usr/bin/make: No such file or directory

やっぱり無い

makeコマンドのインストール

Googleで調べたところ、Xcodeコマンドラインツールをインストールすればmakeコマンドもインストールされるようです。

Xcodeからのコマンドラインインストール

Xcode バージョン 5.1.1の場合、 Xcode > Preference > Downloads > Components にある Command Line Tools を選択してインストールします

f:id:yucatio:20160516000020p:plain

インストール後、makeコマンドのありかを確認してみると、/usr/bin/makeが表示されました。無事makeコマンドがインストールされました。

$ which make
/usr/bin/make

こちらの記事が大変参考になりました。

Mac OS X Lion で、makeコマンドないやんけ!という時の対処方法 - @kaoritter BLOG


コマンドラインコマンドラインツールをインストールする方法

試していませんが、以下のコマンドでもコマンドラインツールをインストールできるようです。

$ xcode-select --install

また、ruby-buildの公式のwikiでは、コマンドラインツールおよびhomebrew The missing package manager for macOS (or Linux) — Homebrew のインストールを実施後、下記コマンドを実施することを推奨しています。

brew install openssl libyaml libffi

github.com

追記

調べてみると、OS X のバージョンによってコマンドラインツールのインストール方法が違うようで、最近のOSの場合は、コマンドを実行してインストールする必要がありそうです。

関連記事

yucatio.hatenablog.com

yucatio.hatenablog.com

rbenvとruby-buildインストール時に no such command `install' が出た原因と対処法

前回の続き。rubyのバージョンをあげる最中に

no such command `install'

というエラーが出てしまった原因と対処法。

症状

rbenv実行時に no such command `install' というエラーが出た

$ rbenv install -l
rbenv: no such command `install'

原因

gitからcloneするときに、保存先のパスを間違って指定してしまった。

正しい方法

  • rbenvは~/.rbenv
  • ruby-buildは~/.rbenv/plugins/ruby-build

にインストール(clone)する

yucatio.hatenablog.com

間違った方法と解決まで

rbenvとruby-buildのclone (誤った手順)

f:id:yucatio:20160512234646p:plain

f:id:yucatio:20160512234710p:plain

ログインスクリプトの記載 (誤った手順)
$ echo 'export PATH="$HOME/git/rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
動かぬ
$ rbenv install -l
rbenv: no such command `install'
一旦今のリポジトリを消して再度clone実行

f:id:yucatio:20160512225025p:plain

怒られた

f:id:yucatio:20160512235639p:plain

自動的に~/.rbenvにいろいろいろ配置されていたようだ

bash-3.2$ ls -la ~/.rbenv
total 96
drwxr-xr-x  4 xxxx  xxxxx    680 May  7 00:35 .
drwxr-xr-x+ 42 xxxx  xxxxx   1462 May 7 23:42 ..
drwxr-xr-x   2 xxxx  xxxxx    306 May  7 00:35 shims
drwxr-xr-x   2 xxxx  xxxxx    102 May  7 00:26 versions
~/.rbenv消去
$ rm -r ~/.rbenv
再度clone実行

f:id:yucatio:20160512225025p:plain

f:id:yucatio:20160512225044p:plain

ログインスクリプト書き直し
$ vi ~/.bash_profile
# 古い内容を削除して、
export PATH=$HOME/git/rbenv/bin:$PATH
# 正しい内容を記載
export PATH=$HOME/.rbenv/bin:$PATH

# 設定を読み込み
$ source ~/.bash_profile
できた
$ rbenv install -l
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
# 後略

言い訳

gitからcloneしてきたものは ~/git 配下に置くようにしてたので今回もその通りにしていました。 PATHでrbenvの場所指定したのでどこにインストールしても大丈夫だと思ってました。 ちゃんとドキュメント読んでおけよという話ですね。

github.com

Rubyのバージョンアップ方法(rbenv使用) - うまくいく場合

PCにインストールされているRubyのバージョンが古かったので、最新の安定板にアップデートしました

開発環境

バージョンアップ手順

現在のバージョンを確認

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

4年前のバージョンですね

ruby自体のバージョンをあげるにはいくつか方法があるようなのですが、今回は友人おすすめのrbenvを使用します。

rbenvの設定

rbenv を git clone
ソースパス/URL https://github.com/sstephenson/rbenv.git
保存先のパス ~/.rbenv

f:id:yucatio:20160512225025p:plain

ログインスクリプトに必要事項を記載
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

# 初回なのでsourceをする。以降はログイン時に上記コマンドが実行される
$ source ~/.bash_profile

# コマンドの確認
$ which rbenv
/Users/user/.rbenv/bin/rbenv
ruby-buildをgit clone

rubyのバージョン管理にはこのプラグインが必要なようです

ソースパス/URL https://github.com/sstephenson/ruby-build.git
保存先のパス ~/.rbenv/plugins/ruby-build

f:id:yucatio:20160512225044p:plain

インストールできるバージョンの確認
# インストールできるrubyのバージョンを確認
$ rbenv install -l
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
# 後略

https://www.ruby-lang.org/ja/downloads/

を確認すると、最新(2016年05月10日時点)の安定版が2.3.1なので、このバージョンをインストールします。 2.3.1がインストールできるか念のため確認。

$ rbenv install -l | grep 2.3.1
  2.3.1

大丈夫そうですね。

rubyのバージョンを指定してインストール
$ rbenv install 2.3.1
Downloading openssl-1.0.2h.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/1d4007e53aad94a5b2002fe045ee7bb0b3d98f1a47f8b2bc851dcd1c74332919
Installing openssl-1.0.2h...
Installed openssl-1.0.2h to /Users/user/.rbenv/versions/2.3.1

Downloading ruby-2.3.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2
Installing ruby-2.3.1...
Installed ruby-2.3.1 to /Users/user/.rbenv/versions/2.3.1
デフォルトで使用するrubyのバージョンを指定する

デフォルトで使用するrubyのバージョンを指定します

$ rbenv global 2.3.1

rubyバージョンの確認

$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin12.0]

バージョンアップできました。

しかし、バージョンアップをする最中にいろいろな問題に遭遇したのでした (次回へ続く)

"パーフェクトRuby on Rails"という本を参考にしています

パーフェクトRuby on Rails

パーフェクトRuby on Rails
著者:すがわらまさのり
価格:3,110円(税込、送料込)
楽天ブックスで詳細を見る