Class: RSpec::Scaffold::Runner
- Inherits:
-
Object
- Object
- RSpec::Scaffold::Runner
- Defined in:
- lib/rspec/scaffold/runner.rb
Instance Attribute Summary collapse
-
#file ⇒ Object
readonly
Returns the value of attribute file.
Instance Method Summary collapse
- #generate_spec(ruby) ⇒ Object
-
#initialize(file = nil) ⇒ Runner
constructor
A new instance of Runner.
- #log(msg = nil, color = :green) ⇒ Object
-
#perform ⇒ Object
V1, DEPRECATED.
- #ruby_files ⇒ Object
- #spec_file(ruby_file) ⇒ Object
- #spec_path ⇒ Object
- #specify(file_name) ⇒ Object
-
#truncate(str) ⇒ Object
Private.
Constructor Details
#initialize(file = nil) ⇒ Runner
Returns a new instance of Runner.
7 8 9 |
# File 'lib/rspec/scaffold/runner.rb', line 7 def initialize(file = nil) @file = Pathname.new(file) if file end |
Instance Attribute Details
#file ⇒ Object (readonly)
Returns the value of attribute file.
4 5 6 |
# File 'lib/rspec/scaffold/runner.rb', line 4 def file @file end |
Instance Method Details
#generate_spec(ruby) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/rspec/scaffold/runner.rb', line 32 def generate_spec(ruby) ryan = Ryan.new(ruby) if ryan.funcs.any? RSpec::Scaffold::Generator.new(ryan).perform else log "- #{truncate(ruby)} - no methods", :puts nil end rescue => e log "! #{truncate(ruby)} - #{e.inspect.gsub /^#<|>$/, ''}\n#{e.backtrace.take(10)}", :red end |
#log(msg = nil, color = :green) ⇒ Object
81 82 83 |
# File 'lib/rspec/scaffold/runner.rb', line 81 def log(msg = nil, color = :green) return RSpec::Scaffold.log(msg, color) end |
#perform ⇒ Object
V1, DEPRECATED
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rspec/scaffold/runner.rb', line 12 def perform fail ArgumentError, %Q(File or directory does not exist: "#{file}") if !File.exists?(file) && !File.exists?("#{file}.rb") ruby_files.each do |ruby_file| rspec_file = Pathname.new(spec_file(ruby_file)) spec_file_path = rspec_file.to_s[%r|/(spec/.+)|, 1] next if rspec_file.exist?.tap { |exists| log "- #{spec_file_path} - already exists", :puts if exists } spec = generate_spec(Pathname.new(File.(ruby_file))) next unless spec log "+ #{spec_file_path}" FileUtils.mkdir_p(rspec_file.parent) File.open(rspec_file, 'wb') do |f| f << spec.join("\n") end end end |
#ruby_files ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/rspec/scaffold/runner.rb', line 52 def ruby_files if File.directory?(file) Dir[File.join(file, '**', '*.rb')] else if file.extname.empty? ["#{file}.rb"] else [file] end end end |
#spec_file(ruby_file) ⇒ Object
Note:
subbing out /app/ is Rails specific
65 66 67 |
# File 'lib/rspec/scaffold/runner.rb', line 65 def spec_file(ruby_file) File.join(spec_path, "#{specify(ruby_file)}").sub '/app/', '/' end |
#spec_path ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/rspec/scaffold/runner.rb', line 73 def spec_path if File.directory?(File.('spec')) File.('spec') else fail "Couldn't find spec directory" end end |
#specify(file_name) ⇒ Object
69 70 71 |
# File 'lib/rspec/scaffold/runner.rb', line 69 def specify(file_name) file_name.sub('.rb', '_spec.rb') end |
#truncate(str) ⇒ Object
Private
48 49 50 |
# File 'lib/rspec/scaffold/runner.rb', line 48 def truncate(str) str.to_s.scan(/.+/).take(2).tap { |x| x[1..-1].each { |i| i[0..-1] = '...' } }.join end |