rubyのプロジェクトのフォルダ構成はこんな形がよいみたい
つーかgemはみんなこんな感じ

crawler/
  lib/
   crawler.rb #動作用モジュールCrawler
   crawler/
    database.rb #必要なクラス
    webpage.rb
    database_connection.yml #DBの接続情報
  bin/
   exec_crawler.rb #動作させるときに実際実行されるファイル


上記の例だと、exec_crawler.rbを実際に叩いて使う
exec_crawler.rbはcrawler.rbにあるメソッドを使う。
exec_crawler.rbが行うのはコマンドライン引数の解釈など
lib/をインクルードするとAPI的に使える。

exec_crawler.rbではこんな感じでロードパスにlib/を追加してreuireする
$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
require 'crawler'
include Cralwer
この場合、カレントディレクトリがbin/の状態で実行するのでlib/内でのファイルの読み込みはこんな感じ
YAML::load_file(File.join(__dir__, 'database_connection.yml'))