質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Q&A

解決済

2回答

11203閲覧

require': cannot load such file -- "" (LoadError)

suzuya1919

総合スコア6

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

0グッド

1クリップ

投稿2018/09/30 09:57

表題のエラーだが、下記のような階層で構築されたプロジェクトで gem を構築するためのものである。

この状態でoption.rbを呼ぶとエラーが出る、

tree

1├── bin 2│   └──binruby 3├── doc 4│   └── result.png 5├── lib 6│   ├── binruby 7│   │   ├── option.rb 8│   │   ├── version.rb 9│   └── binruby.rb 10

`require': cannot load such file -- "" (LoadError)

ただversion.rbでoption.rbと同じものを定義し、option.rbを呼び出さないで実行すると、エラーが出ずに、

正常に実行できる。

下記がコードになります。

ruby

1module OptionModule 2 class Option 3 4 def initialize 5 6 end 7 8 def sort 9 puts "Option class called" 10 end 11 end 12end 13

権限も調べたが、同じようなエラーが出続け、実行できない

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/09/30 10:15

コードの中にはどこにもrequireが無いのですが、requireのエラーが出るのですか?
suzuya1919

2018/09/30 10:20

tree をみていただけるとご理解いただけるかと思われますが、bin 直下の binruby 左記が拡張子はありませんが、Rubyのファイルになってます。この中でrequire しております。またbinruby.rb 左記 rb拡張子を持ったrubyファイルの中でversion.rbと、option.rbをrequireしております。これをgem buildでgem を生成し、installし実行すると表題のエラーがでます。要約すると、パスは同じ、コードも問題ない、権限もある、が表題のエラーが出てしまうという事象ですね
otn

2018/09/30 10:22

コードは質問内容と無関係と言うことですかね。
guest

回答2

0

自己解決

こちら解決しました。

下記エラーログのパスを確認すると、

対象のファイルが見つかりませんでした、それが原因でrequire できておりませんでしたが、

from /Library/Ruby/Gems/2.3.0/gems/binruby-1.2.3/lib/binruby.rb:5:in `<top (required)>'

git で管理されているので、git add commit することにより追加されました。

gem はgitで管理されていないファイルはrequire しても追加されずにLoadErrorが発生してしまう感じでした。

既存gemにてファイルを追加する際には、git を使って add しなければ追加されないということでした。

投稿2018/09/30 13:06

suzuya1919

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

requireで指定するファイル名は、フルパスで指定してますか?相対パスで指定した場合は、カレントディレクトリからの相対です。
スクリプトファイルの場所からの相対で読み込みたいときは、require_relativeを使います。

投稿2018/09/30 10:21

otn

総合スコア84702

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suzuya1919

2018/09/30 10:24

そちらも試しました、 version.rbとoption.rbで、versio.rbだけエラーが出ます。 option.rbだけ、requireできません。 require "binruby/version" require "binruby/option" 上記のような状態であり、version.rb内で定義されたコードは実行できますが、 option.rbだけ読み込みエラーが出ます
otn

2018/09/30 10:30 編集

「そちら」とは? 書かれている物は、フルパスでもないし、require_relativeでも無いのですが?
suzuya1919

2018/09/30 10:37

そうですね、 require File.expand_path(File.dirname(__FILE__) + "/option") 上記と require_relative 上記は試してみました。 問題なのは、 require "binruby/version" require "binruby/option" このような読み込みになっていた場合、version.rbにoption.rbのコードを定義し、呼び出すと実行できますが、 option.,rbだと実行できないといった具合ですね 名前も同じなのですが、
otn

2018/09/30 11:14

カレントディレクトリが異なるのでは?
suzuya1919

2018/09/30 11:31

いや〜これ$LOAD_PATHに追加されておりませんでしたね、 /Library/Ruby/Gems/2.3.0/gems/binruby-1.2.3/lib/binruby.rb:1 上記のパスにversion.rbはあるが、option.rbがないという感じですな。 これgemなんですが、LOAD_PATHにファイルが反映されない場合ってどこに追加したいファイルを記述すれば良いのでしょうか? ご存知ですか?
otn

2018/09/30 11:43

自分で作って配置したファイルで無いと言うことですか? > 下記のような階層で構築されたプロジェクトで  と書いてあったので、てっきり開発中のプロジェクトのことかと。 gemsであれば、requireで自動的にLOAD_PATHに追加されますので、事前に追加する必要はありません。
suzuya1919

2018/09/30 11:50

いや〜 しかし、追加されんのですよね?????
otn

2018/09/30 12:04

質問文中に書いてあるディレクトリ構成は、gemsと異なりますが、これも質問と関係ない情報と言うことですかね。 一度、質問をきちんと書き直した方がいいのでは?無関係なことを書かれると回答者が混乱します。
suzuya1919

2018/09/30 12:20

下記ですかね、 /Library/Ruby/Gems/2.3.0/gems/binruby-1.2.3/lib/binruby.rb:1 これは、gem buildした際に作成されるものですね
suzuya1919

2022/10/22 00:34

下記ですが、 ``` 質問文中に書いてあるディレクトリ構成は、gemsと異なりますが、これも質問と関係ない情報と言うことですかね。 一度、質問をきちんと書き直した方がいいのでは?無関係なことを書かれると回答者が混乱します。 ``` otnさんもう少ししっかりと、文章とrubyの仕様を理解した方が良いです。 質問に対して返答していただいたわけですが 返答内容が、レベル低すぎて、困ります。 うるさいだけです。 以後このような返答はやめてください 以後このような返答をお控え下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問