Class: Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/generator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rails_root, single, force) ⇒ Generator

Returns a new instance of Generator.



5
6
7
8
9
# File 'lib/generator.rb', line 5

def initialize(rails_root, single, force)
  @rails_root = rails_root
  @single = single
  @force = force
end

Instance Attribute Details

#forceObject

Returns the value of attribute force.



3
4
5
# File 'lib/generator.rb', line 3

def force
  @force
end

#rails_rootObject

Returns the value of attribute rails_root.



3
4
5
# File 'lib/generator.rb', line 3

def rails_root
  @rails_root
end

#singleObject

Returns the value of attribute single.



3
4
5
# File 'lib/generator.rb', line 3

def single
  @single
end

Instance Method Details

#create_factoriesObject



11
12
13
14
15
16
17
18
# File 'lib/generator.rb', line 11

def create_factories
  @rails_root = rails_root
  if !@single
    create_multiple
  else
    create_single
  end
end

#create_multipleObject



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/generator.rb', line 55

def create_multiple
  if !directory?("spec/factories")
    FileUtils.mkdir_p("#{@rails_root}/spec/factories")
  end
  library = Library.new
  ActiveRecord::Base.connection.tables.each do |table_name|
    next if table_name == 'schema_migrations'
    next if file?("spec/factories/#{table_name}.rb") and !@force
    file = File.join(@rails_root, 'spec', 'factories', "#{table_name}.rb")
    File.open(file, 'w') do |f|
      f.puts "require 'factory_girl'"
      f.puts "\n"
      f.puts "FactoryGirl.define do"
      p "Creating factory #{table_name}"
      f.puts "\n"
      f.puts "  factory :#{table_name} do"
      ActiveRecord::Base.connection.columns(table_name).each do |c| 
        f.puts "    #{c.name} #{library.check(c.name, c.type, c.limit)}"
      end
      f.puts "  end"
      f.puts "\n"
      f.puts "end"
    end
  end

end

#create_singleObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/generator.rb', line 32

def create_single
  library = Library.new
  return if file?("spec/factories.rb") and !@force
  file = File.join(@rails_root, 'spec', 'factories.rb')
  File.open(file, 'w') do |f|
    f.puts "require 'factory_girl'"
    f.puts "\n"
    f.puts "FactoryGirl.define do"
    ActiveRecord::Base.connection.tables.each do |table_name|
      next if table_name == 'schema_migrations'
      p "Creating factory #{table_name}"
      f.puts "\n"
      f.puts "  factory :#{table_name} do"
      ActiveRecord::Base.connection.columns(table_name).each do |c| 
        f.puts "    #{c.name} #{library.check(c.name, c.type, c.limit)}"
      end
      f.puts "  end"
    end
    f.puts "\n"
    f.puts "end"
  end
end

#directory?(path) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/generator.rb', line 24

def directory?(path)
  File.directory?("#{@rails_root}/#{path}")
end

#file?(path) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/generator.rb', line 20

def file?(path)
  File.exists?("#{@rails_root}/#{path}")
end

#to_boolean(str) ⇒ Object



28
29
30
# File 'lib/generator.rb', line 28

def to_boolean(str)
  str == "true"
end