rubyプロジェクトのフォルダ構成のベストプラクティス(?)
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する
つーか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'))