Rubyにおけるrequireの使用例
同じディレクトリにあるファイル、例えば /usr/local/ruby/foo.rb と /usr/local/ruby/bar.rb.
foo.rbに直接記述する場合
require 'bar'
実行すると、bar.rbが見つからないというエラーが報告されます。
を実行するためです。
/home/oldsong$ ruby /usr/local/ruby/foo.rb
この場合、bar.rb は ruby インストールの lib ディレクトリと /home/oldsong/ にあるものを探します。rbファイルがある/usr/local/ruby/というディレクトリは探さないことになります。
つまり、システムrbへの参照を除いて、requireで相対パスを使うことはできないのです。
以下は、個人的な経験も合わせて、1つのandディレクトリにある全てのrbを参照する方法をいくつか紹介します。
1. ファイルの参照
例 現在のrbと同じディレクトリにあるfile_to_require.rbを参照する。
まずは3つのメソッドから
require File.join(__FILE_, '. /file_to_require').
require File.expand_path('. /file_to_require', __FILE__)
require File.dirname(__FILE__) + '/file_to_require'
File.expand_pathがRailsでよく使われるところ。
__FILE__ は現在のファイルへの絶対パスを表す定数で、例えば /home/oldsong/test.rb のようなものです。
方法4.
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'bar'
まずLOAD_PATH変数にディレクトリを追加し、その後ファイル名を直接参照できるようにします。
2、ディレクトリ内の全ファイルの参照
Rubyには、Javaのimport java.io.*がありません。
参照時にワイルドカードは使えないので、後のバージョンで追加することは可能かと思います。
例 現在のrbと同じディレクトリのlib/ファイルの下にあるすべての*.rbファイルを参照します。
方法1.
Dir[File.dirname(__FILE__) + '/lib/*.rb'].each {|file| require file }
方法2.
1つのgemで完結する
https://rubygems.org/gems/require_all
関連
-
Rubyの二分探索(dichotomous search)アルゴリズムの簡単な例
-
基本的なユーザー登録とログイン機能を実装するためのRuby on Railsチュートリアル
-
bundlerを使ったRuby環境のインストールと複数バージョンのgemの管理
-
モンキーパッチのプログラミングスタイルとRubyでの利用について
-
MongoDBに接続するためのRuby on Railsフレームワークアプリケーション チュートリアル
-
Rubyブロックチュートリアル
-
RubyのXMLデータパースライブラリ「Nokogiri」の高度な使い方
-
Nokogiriパッケージを使ってXML形式のデータを操作するためのRubyチュートリアル
-
デザインパターンのうち、ProxyパターンとDecorativeパターンを使ったRubyのコード例
-
Ruby on Railsのマイグレーションに関するいくつかの考慮点
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン