Sha256: 39f603305fafdd3e3413048c74cdb3ffa605836a8b1a8edf57c19b6dff3162fc

Contents?: true

Size: 1.68 KB

Versions: 1

Compression:

Stored size: 1.68 KB

Contents

class SurveyorGenerator < Rails::Generator::Base
  def manifest
    record do |m|
      
      # Migrate 
      # not using m.migration_template because all migration timestamps end up the same, causing a collision when running rake db:migrate
      # coped functionality from RAILS_GEM_PATH/lib/rails_generator/commands.rb
      m.directory "db/migrate"
      ["surveys", "survey_sections", "questions", "answers", "response_sets", "responses", "dependencies", "question_groups", "dependency_conditions"].each_with_index do |model, i|
        raise "Another migration is already named #{migration_file_name}" if not Dir.glob("db/migrate/[0-9]*_*.rb").grep(/[0-9]+_create_#{model}.rb$/).empty?
        m.template("migrate/create_#{model}.rb", "db/migrate/#{(Time.now.utc.strftime("%Y%m%d%H%M%S").to_i + i).to_s}_create_#{model}.rb")
      end
      
      # Generate CSS
      root = File.join(File.dirname(__FILE__), "templates", "assets", "stylesheets")
      `sass #{root}/sass/surveyor.sass #{root}/surveyor.css`

      # Assets
      ["images", "javascripts", "stylesheets"].each do |asset_type|
        m.directory "public/#{asset_type}/surveyor"
        Dir.glob(File.join(File.dirname(__FILE__), "templates", "assets", asset_type, "*.*")).map{|path| File.basename(path)}.each do |filename|
          m.file "assets/#{asset_type}/#{filename}", "public/#{asset_type}/surveyor/#{filename}"
        end
      end
      
      # Surveys
      m.directory "surveys"
      m.directory "surveys/fixtures"
      m.file "surveys/kitchen_sink_survey.rb", "surveys/kitchen_sink_survey.rb"
      
      m.readme "README"
      
    end
  end
  def self.next_migration_string(i)
    Time.now.utc.strftime("%Y%m%d%H%M%S")
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
breakpointer-surveyor-0.2.0 generators/surveyor/surveyor_generator.rb