Macの初期Rubyは罠かよ・・・

child-1721906_1280

まじかよぉ・・・・
ハマったわぁ

MacでRubyのプログラムを動かそうとしたらエラーが出る。
↓こんなヤツ

 

本時期は Mac OS X El Capitan より前のVer時のものです。
El Capitan以降では、Operation not permitted が発生します。
sudo を付与しても発生します

El CapitanからRootlessという機能が採用されています。
この機能のために Operation not permitted が発生します。

Rootlessを解除するにはリカバリーモードでの起動が必要です。
リカバリーモードの方法は以下の記事をご参照ください。

>> Emacsのauto-installで接続エラー443発生
※上記の記事で「リカバリーモード」や「8−3.」で検索してください。

 

 




再現手順

手順としてはこんな感じ

1.selenium-webdriverを使ったプログラムを書く

2.selenium をインストール

3.gemのインストールリストを確認

リストの中にseleniumが無いのでおかしいんだけど、ひとまず後で考えるとする

4.ruby sele.rb でエラー発生

要は selenium-webdriver が無いって言われてる。
gem list に出てないしやっぱりかという感じ。

とは言え、解決方法が分からない。

調べまくった結果やっと分かった。

原因

Macに最初に入っているRubyが古いからアカンねん!!!

解決

Rubyをバージョンアップしなはれぇ〜!!!

1.まずは現在のRubyのバージョンを確認

2.どこにあるのか確認

3.HomebrewでRubyをインストール

※その前にHomebrewをバージョンアップ
※Homebrewはちょくちょく更新されているのでバージョンアップしておく

4.HomebrewでRubyをインストール

Verが変わってないじゃん と思うでしょうが、まぁ、そらそうです。
HomebrewでインストールしたRubyは「/usr/local/bin/ruby」(/usr/local/Cellar/ruby/2.2.3/bin/ruby が実体)、現在のRubyは「/usr/bin/ruby」。
この現在のRubyをHomebrewでインストールしたものに置き換えればOK!!

5.現在のRubyをバックアップする

これで現在のRubyは不在です。
この位置にHomebrewでインストールしたRubyを置けばOK!!

6.HomebrewでインストールしたRubyのシンボリックリンクを置く

7.置き換わったはずのRubyのバージョンを確認

Rubyが置き換わった!!!!

8.selenium-webdriver のインストール

 


 

これでエラーはなくなって正しく実行されるようになりました。
ホンマこれで半日潰れたわ。
ただ、この時点でも gem list の中に selenium が無いんやけど・・・、ま、ええか。
気にしないようにしましょう(笑)

サンプルプログラム

※事前に「brew install chromedriver」しておく必要あり

 

 

広告
広告
child-1721906_1280

プログラミングを楽しもう!

初心者向けのプログラミング教室やってます!
Skype or 対面で対応致します。
C言語、ExcelVBA、Scratch、Linux初歩の初歩といろいろなコースがあります。
※Rubyコース準備中!

小学生のお子さまにはScrachでプログラミングを楽しんで頂けます。

無料体験がありますので、是非お気軽にレッスンを受けてみてください。
プログラミングは楽しいですよ!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。