class Serum::Rails::App
Attributes
root[R]
Public Class Methods
new(root)
click to toggle source
# File lib/serum/rails/app.rb, line 7 def initialize(root) @root = File.expand_path(root) ensure_root_exists ensure_is_rails_app end
Public Instance Methods
count_gems()
click to toggle source
# File lib/serum/rails/app.rb, line 30 def count_gems Dir.chdir(@root) do run_command('bundle list').split(/\n/).size - 1 end end
count_routes()
click to toggle source
# File lib/serum/rails/app.rb, line 24 def count_routes Dir.chdir(@root) do run_command('bundle exec rake routes').split(/\n/).size - 1 end end
lines_of_code()
click to toggle source
def gems
cd bundle list | wc -l
end
# File lib/serum/rails/app.rb, line 18 def lines_of_code count_lines # matches anything in all folders end
Private Instance Methods
code_scanner()
click to toggle source
# File lib/serum/rails/app.rb, line 73 def code_scanner @code_scanner ||= CodeScanner.new(@root) end
ensure_is_rails_app()
click to toggle source
# File lib/serum/rails/app.rb, line 59 def ensure_is_rails_app expected_folders = %w[ app/models app/controllers app/views config db ] expected_folders.each do |expected_folder| path = File.join(@root, expected_folder) File.directory?(path) or raise "Not a Rails application: #{@root} (expected folder #{expected_folder}" end end
ensure_root_exists()
click to toggle source
# File lib/serum/rails/app.rb, line 55 def ensure_root_exists File.directory?(@root) or raise "Not a directory: #{@root}" end
run_command(cmd)
click to toggle source
# File lib/serum/rails/app.rb, line 38 def run_command(cmd) with_clean_env do result = `#{cmd}` $?.success? or raise "Error while running command: #{cmd}" result end end
with_clean_env(&block)
click to toggle source
# File lib/serum/rails/app.rb, line 46 def with_clean_env(&block) # Unlike RVM, rbenv does not auto-load Bundler for gem binaries. So. if defined?(Bundler) Bundler.with_clean_env(&block) else block.call end end