Railsで指定したディレクトリ以下のファイルを取得する時につまずいたので共有します。
環境
バージョン
$ rails -v
Rails 5.2.3
$ ruby -v
ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin18]
ディレクトリ構成(該当部分のみ)
app/commands/command.rb
app/commands/command/hoge_command.rb
app/commands/command/fuga_command.rb
app/commands/command/piyo_command.rb
ソースコード
# app/commands/command.rb
class Command
def initialize(command_name)
files_abs_pass = Dir[File.expand_path("#{Rails.root}/app/commands/command/", __FILE__) << '/*.rb']
files_abs_pass.each { |f| puts f }
# /Users/user/work/rails/rails_app/app/commands/command/hoge_command.rb
# /Users/user/work/rails/rails_app/app/commands/command/fuga_command.rb
# /Users/user/work/rails/rails_app/app/commands/command/piyo_command.rb
end
end
# app/commands/command/hoge_command.rb
class HogeCommand < Command
end
当初はこのページを参考にしていたのですが、ファイル一覧を取得できなかったので変えました。
# 掲載元のコード
Dir[File.expand_path('../commands', __FILE__) << '/*.rb'].each do |file|
require file
end
JavaのJSPでも同じような事象に悩まされていたので、解決方法はこれでいいんじゃないかって思えましたw(uriの指定)
もっとスマートに書けるはずなので、気が向いたらあとがきにでも書きます。。。(コメント頂けたらとても嬉しいです...!)