Class: Venus::Generators::CarrierwaveGenerator

Inherits:
Base
  • Object
show all
Defined in:
lib/generators/venus/carrierwave/carrierwave_generator.rb

Instance Method Summary collapse

Methods inherited from Base

next_migration_number, source_root

Instance Method Details

#asksObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/generators/venus/carrierwave/carrierwave_generator.rb', line 10

def asks
  @rails_version = ask?("your rails version?", '3.2')
  @rails_version = @rails_version.index("3.2") == 0 ? '3.2' : '3.1'
  @imagemagick = ask?("Use imagemagick to resize picture?", true)
  @carrierwave_meta = ask?("Install gem 'carrierwave-meta'", true)
  @sample_uploader = ask?("Generate sample uploader?", 'venus')
  @fog = ask?("Use fog to upload file to AWS S3", true)
  if @fog
    say 'checking dependent gems "settinglogic"...'
    generate 'venus:settingslogic' unless has_gem?('settingslogic')
    @settinglogic_class = ask?("Your settinglogic class name?", 'Setting')
    @settinglogic_yml = ask?("Your settinglogic yaml file in config/ ?", 'setting.yml')
    say 'checking dependent gems "aws-sdk"...'
    generate 'venus:aws' unless has_gem?('aws-sdk')
  end
end

#configsObject



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/generators/venus/carrierwave/carrierwave_generator.rb', line 39

def configs
  template "carrierwave_#{@rails_version}.erb", 'config/initializers/carrierwave.rb'
  if @fog
    ["config/#{@settinglogic_yml}", "config/#{@settinglogic_yml}.example"].each do |to_file|
      insert_into_setting_yml(to_file, 'aws_access_key_id', :ask, :hide_in_example => true)
      insert_into_setting_yml(to_file, 'aws_secret_access_key', :ask, :hide_in_example => true)
      @aws_bucket_carrierwave = insert_into_setting_yml(to_file, 'aws_bucket_carrierwave', @aws_bucket_carrierwave || :ask)
      @aws_region_carrierwave = insert_into_setting_yml(to_file, 'aws_region_carrierwave', @aws_region_carrierwave || :ask, :hint => "us-east-1")
      @aws_host_carrierwave = insert_into_setting_yml(to_file, 'aws_host_carrierwave', @aws_host_carrierwave || :ask, :hint => "http://example.com")
    end
  end
end

#gemfileObject



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/generators/venus/carrierwave/carrierwave_generator.rb', line 27

def gemfile
  if @rails_version == '3.2'
    add_gem("carrierwave", "~> 0.8.0")
  else
    add_gem("carrierwave", "0.7.1")
  end
  add_gem('mini_magick', "~> 3.6.0") if @imagemagick
  add_gem("carrierwave-meta", '~> 0.0.4') if @carrierwave_meta
  add_gem('fog') if @fog
  bundle_install
end

#nameObject



6
7
8
# File 'lib/generators/venus/carrierwave/carrierwave_generator.rb', line 6

def name
  "carrierwave"
end

#sample_uploaderObject



52
53
54
# File 'lib/generators/venus/carrierwave/carrierwave_generator.rb', line 52

def sample_uploader
  template "uploader.erb", "app/uploaders/#{@sample_uploader}_uploader.rb"
end

#seemoreObject



56
57
58
# File 'lib/generators/venus/carrierwave/carrierwave_generator.rb', line 56

def seemore
  puts "see more configuration in https://github.com/jnicklas/carrierwave"
end