Class: Cucumber::Generators::SkeletonGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/cucumber/skeleton/skeleton_generator.rb

Constant Summary collapse

DEFAULT_SHEBANG =
File.join(Config::CONFIG['bindir'],
Config::CONFIG['ruby_install_name'])

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args, &block) ⇒ SkeletonGenerator

Returns a new instance of SkeletonGenerator.



35
36
37
38
# File 'lib/generators/cucumber/skeleton/skeleton_generator.rb', line 35

def initialize(*args, &block)
  super
  # @language = args.empty? ? 'en' : args.first
end

Class Method Details

.source_rootObject



30
31
32
# File 'lib/generators/cucumber/skeleton/skeleton_generator.rb', line 30

def self.source_root 
  @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))  
end

Instance Method Details



120
121
122
# File 'lib/generators/cucumber/skeleton/skeleton_generator.rb', line 120

def banner
  "Usage: #{$0} cucumber (language)"
end

#create_filesObject



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/generators/cucumber/skeleton/skeleton_generator.rb', line 67

def create_files      
  if File.exist?('features/step_definitions/webrat_steps.rb')
    STDERR.puts "Please remove features/step_definitions/webrat_steps.rb\n" + 
    "See upgrading instructions for 0.2.0 in History.txt"
    exit(1)
  end
  if File.exist?('features/support/version_check.rb')
    STDERR.puts "Please remove features/support/version_check.rb\n" + 
    "See upgrading instructions for 0.2.0 in History.txt"
    exit(1)
  end

  template 'config/cucumber.yml.erb', 'config/cucumber.yml'
  template 'environments/cucumber.rb.erb', 'config/environments/cucumber.rb'
    
  copy_file 'script/cucumber', 'script/cucumber'      
  chmod 'script/cucumber', 0755, :verbose => false, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang]

  empty_directory 'features/step_definitions'      
  template "step_definitions/#{driver}_steps.rb.erb", 'features/step_definitions/web_steps.rb'
  if language != 'en'
    template "step_definitions/web_steps_#{language}.rb.erb", "features/step_definitions/web_steps_#{language}.rb"
  end

  empty_directory 'features/support'
  if spork?
    template 'support/rails_spork.rb.erb', 'features/support/env.rb'
  else
    template 'support/rails.rb.erb',       'features/support/env.rb'
  end
  copy_file       'support/paths.rb',           'features/support/paths.rb'

  empty_directory 'lib/tasks'
  template  'tasks/cucumber.rake.erb',     'lib/tasks/cucumber.rake'
    
  gsub_file 'config/database.yml', /test:.*\n/, "test: &TEST\n"
  unless File.read('config/database.yml').include? 'cucumber:'
    gsub_file 'config/database.yml', /\z/, "\ncucumber:\n  <<: *TEST"
  end
 
end

#driverObject



52
53
54
# File 'lib/generators/cucumber/skeleton/skeleton_generator.rb', line 52

def driver
  my_options[:driver] ||= detect_current_driver || detect_default_driver
end

#frameworkObject



48
49
50
# File 'lib/generators/cucumber/skeleton/skeleton_generator.rb', line 48

def framework
  my_options[:framework] ||= detect_current_framework || detect_default_framework
end

#my_optionsObject



40
41
42
# File 'lib/generators/cucumber/skeleton/skeleton_generator.rb', line 40

def my_options
  @my_options ||= {}      
end

#spork?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/generators/cucumber/skeleton/skeleton_generator.rb', line 44

def spork?
  options[:spork]
end

#versionObject

def embed_template(source, indent=”)

template = File.join(File.dirname(__FILE__), 'templates', source)
ERB.new(IO.read(template), nil, '-').result(binding).gsub(/^/, indent)

end



61
62
63
64
65
# File 'lib/generators/cucumber/skeleton/skeleton_generator.rb', line 61

def version
  filename = File.dirname(__FILE__) + '/../../../../VERSION'
  path = File.expand_path(filename)
  IO.read(filename).chomp
end