重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Rubyのサンプルコードの起動方法についてお聞きしたいです。

現在、「アンダースタンディング・コンピレーション」という本のサンプルコードをダウンロードし、irbを用いて実行しながら学習しようと考えています。

しかし、irbを用いてrbファイルを起動したのですが以下のエラーがでて上手く行きません。

/home/vagrant/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- execjs/json (LoadError)
from /home/vagrant/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /vagrant/share/computationbook/the_meaning_of_programs/denotational/assign.rb:1:in `<top (required)>'
from /vagrant/share/computationbook/the_meaning_of_programs/denotational.rb:2:in `require_relative'
from /vagrant/share/computationbook/the_meaning_of_programs/denotational.rb:2:in `<top (required)>'
from the_meaning_of_programs.rb:2:in `require_relative'
from the_meaning_of_programs.rb:2:in `<main>'

メッセージを見たところ、requireで問題が起こっているようなのですが、
パスなどにも問題があるようには見えず。行き詰っています。

irbで実行したファイルの内容は、間接的に複数のファイルをrequireで読み込むものです。
また、その際のパスは相対パスで記述されいてるようです。
当方、Ruby初心者なのでirbやrubyの根本的な使用方法に誤りがあるかもしれません。

エラーに見覚えのある方、
アンダースタンディング・コンピレーションをサンプルコードから学習した方
などいらっしゃいましたら,助言いただければ幸いです。

A 回答 (1件)

こんにちは


私も同書を読み始め、試してみまして同じエラーになりました。

エラーはexecjs/jsonというファイルが無いというものです。
これはrubygemsからexecjsというライブラリをインストールすれば良いのですが、同書の原著は1年くらい前にかかれたものらしく最新のecexjsでは動作しません。そこで古いバージョンのものを持ってきてインストールする必要があります。

手順
1. 下記参考URLからexecjs-1.4.0.gemをダウンロード

2. execjs-1.4.0.gemは、multi_jsonを必要とするのでrubygemsからインストール
 コンソールで以下を実行

 gem install multi_json

3. 1でダウンロードしたexecjs-1.4.0.gemをインストール
 execjs-1.4.0.gemのあるディレクトリに移動
 コンソールで以下を実行

 gem install --local execjs-1.4.0.gem


私の環境では以上で動作しました。
ご参考にしていただけると幸いです。

参考URL:https://rubygems.org/gems/execjs/versions
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!