Sha256: ee7e40e932504a8e2c1f3701e94902d115f6522471570b2489260fb25f5bd625
Contents?: true
Size: 1.7 KB
Versions: 1
Compression:
Stored size: 1.7 KB
Contents
module Serum module Rails class App attr_reader :root def initialize(root) @root = File.expand_path(root) ensure_root_exists ensure_is_rails_app end #def gems # cd # bundle list | wc -l #end def lines_of_code count_lines # matches anything in all folders end delegate :count_lines, :to => :code_scanner def count_routes Dir.chdir(@root) do run_command('bundle exec rake routes').split(/\n/).size - 1 end end def count_gems Dir.chdir(@root) do run_command('bundle list').split(/\n/).size - 1 end end private def run_command(cmd) with_clean_env do result = `#{cmd}` $?.success? or raise "Error while running command: #{cmd}" result end end 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 def ensure_root_exists File.directory?(@root) or raise "Not a directory: #{@root}" end 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 def code_scanner @code_scanner ||= CodeScanner.new(@root) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
serum-rails-0.2.1 | lib/serum/rails/app.rb |