rbenvで環境切り替えたとき用にRubyのrequire一覧を出すTool
TL;DR (長い三行で)
・rbenv
でRubyのVersionを入れ替えたときに,Gem
が入ってなくてrequire xxx
でエラーが出る
・エラー出るたびにgem install xxx
するのしんどい
・いまあるrequire xxx
を全部リストアップするToolつくるで
できたもの
gen_require_lines.rb
#! /usr/bin/env ruby
#! ruby
# ENCODING: UTF-8
#### SEARCH ALL .RB FILES UNDER PWD
def get_rb_files(root_dir)
rb_files = []
Dir.entries(root_dir).each { |entry|
next if entry.start_with?('.')
entry_full_path = "#{root_dir}/#{entry}"
case File.ftype(entry_full_path)
when 'directory'
sub_results = get_rb_files(entry_full_path)
rb_files += sub_results
when 'file'
if entry.end_with?('.rb')
rb_files << entry_full_path
end
else
# NOP.
end
}
return rb_files
end
total_rb_files = get_rb_files(Dir.pwd)
total_rb_files.sort!
#### PARSE EACH .RB
require_lines = []
total_rb_files.each { |rb|
File.open(rb) { |file|
file.each_line { |line|
line.force_encoding('UTF-8')
line.chomp!
line.scrub!
line.strip!
if !line.match(/^require\s/).nil?
require_lines << line
end
}
}
}
require_lines.uniq!
require_lines.sort!
#### OUTPUT
require_lines.each { |line|
puts line
}
まとめると
gen_require_lines.rb
#! /usr/bin/env ruby
#! ruby
# ENCODING: UTF-8
#### SEARCH ALL .RB FILES UNDER PWD
def get_rb_files(root_dir)
rb_files = []
Dir.entries(root_dir).each { |entry|
next if entry.start_with?('.')
entry_full_path = "#{root_dir}/#{entry}"
case File.ftype(entry_full_path)
when 'directory'
sub_results = get_rb_files(entry_full_path)
rb_files += sub_results
when 'file'
if entry.end_with?('.rb')
rb_files << entry_full_path
end
else
# NOP.
end
}
return rb_files
end
total_rb_files = get_rb_files(Dir.pwd)
total_rb_files.sort!
#### PARSE EACH .RB
require_lines = []
total_rb_files.each { |rb|
File.open(rb) { |file|
file.each_line { |line|
line.force_encoding('UTF-8')
line.chomp!
line.scrub!
line.strip!
if !line.match(/^require\s/).nil?
require_lines << line
end
}
}
}
require_lines.uniq!
require_lines.sort!
#### OUTPUT
require_lines.each { |line|
puts line
}
こんなTool作るハメになる前に,外部依存関係はちゃんと管理しましょう.
---///
Author And Source
この問題について(rbenvで環境切り替えたとき用にRubyのrequire一覧を出すTool), 我々は、より多くの情報をここで見つけました https://qiita.com/fezrestia/items/eff26fea1457b9dc87c8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .