1. ホーム
  2. ruby

[解決済み] Rubyの理想的なプロジェクト構造

2022-07-08 22:23:46

質問

私はruby(非rails/merb/など)プロジェクトのための理想的なプロジェクト構造の概要/明確化を求めています。私はそれが次のように推測しています。

app/
  bin/                  #Files for command-line execution
  lib/
    appname.rb
    appname/            #Classes and so on
  Rakefile              #Running tests
  README
  test,spec,features/   #Whichever means of testing you go for
  appname.gemspec       #If it's a gem

何か間違いがあったのだろうか?どの部分を見落としたのでしょうか?

どのように解決するのですか?

かなり的を射ていると思います。デフォルトでは、Rubygems は lib ディレクトリをロードパスに追加しますが、$: 変数を使って好きなディレクトリをその上に追加することができます。

$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')

つまり、sayがあるときに surfer.rb がある場合、そのディレクトリで require "surfer" を実行すれば、ファイルが見つかります。

また、慣習として、クラスとシングルトンはファイルを取得し、モジュールはディレクトリを取得します。例えば、もしあなたが LolCatz モジュールがあり LolCatz::Moar のようなクラスになります。

lib/
  appname.rb
  lolcatz/
    moar.rb

そのため、lib/appname フォルダがあるのは、ほとんどのライブラリが appname の名前空間にあるからです。

さらに、コマンドを実行してみると newgem --simple [projectname] を実行してみると、Rubyプロジェクト(ひいてはRuby Gem)に必要な最低限のものだけを集めた雛形がすぐに生成されます。これを行うツールは他にもありますが、newgemはかなり一般的です。私は通常、TODOファイルやすべてのスクリプトのものを削除します。