ruby: まとめてrequireする
前回↓
書籍「実践SeleniumWebDriver」のPageObjectパターンをRubyでやってみた。 - 非開発者がプログラム技術を使ったQAを目指すブログ
の課題を解決したい
- ruby 2.0.0p481
- mac OS10.10.1
E2Etest └ pages └ add_new_post_page.rb └ admin_login_page.rb └ all_posts_page.rb └ delete_post_page.rb └ edit_post_page.rb └ test.rb
という構成( 前回と少しディレクトリ構造を変えています)で、test.rbに
#test.rb require File.expand_path(File.dirname(__FILE__) + '/pages/add_new_post_page') require File.expand_path(File.dirname(__FILE__) + '/pages/admin_login_page') require File.expand_path(File.dirname(__FILE__) + '/pages/all_posts_page') require File.expand_path(File.dirname(__FILE__) + '/pages/edit_post_page') require File.expand_path(File.dirname(__FILE__) + '/pages/delete_post_page')
って書くのが大変だなという話。
Rubyで指定ディレクトリ以下のファイルを全てrequireする方法 - くろの雑記帳
にまさにドンピシャな内容が書かれていたので参考にさせていただきました。
Dir[File.expand_path("../pages/", __FILE__) << '/*.rb'].each do | file | require file end
以下、自分メモ
File.expand_path('相対Path', __FILE__)
- "FILE"(現在のファイル。この場合test.rb)を基準として'相対Path'の位置にあるファイルの絶対パスを文字列で返す。
- ってことは test.rb からみて "../" が "E2Etestディレクトリ" を指すので、結果として
E2Etest/pages/*.rb
のファイルがrequireされる、と。
こちらも参考にさせてもらいました
RubyのFile.expand_path('相対パス', __FILE__)の意味 - maeharinの日記