Class: BlogIo::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/blog_io/install_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_models_data(source = Rails.root, user_data = @get_data) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/generators/blog_io/install_generator.rb', line 59

def add_models_data(source = Rails.root, user_data = @get_data)
  user_data.each do |name, field|
    field_name = field['name']
    @user_data, @name, @field = user_data, name, field_name
    template "#{field_name}_template.rb","#{source}/app/models/#{field_name}.rb"
  end
  template "db_connector_template.rb","#{source}/lib/blog_db_connect.rb"
end

#blog_settingsObject



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/generators/blog_io/install_generator.rb', line 21

def blog_settings
  if @connection_flag
    Rails::Generators.invoke("model",
      [ "BlogSettings",
        "original_table_name:string",
        "model_name:string",
        "primary_key_field:string",
        "--no-test-framework"]
    )
    %x[rake db:migrate]
  end
end

#check_db_connection(source = Rails.root) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/generators/blog_io/install_generator.rb', line 12

def check_db_connection(source = Rails.root)
  @data = YAML.load_file "#{source}/config/database.yml"
  ActiveRecord::Base.establish_connection @data['blog_db_connector']
  ActiveRecord::Base.connection
  @connection_flag = ActiveRecord::Base.connected?
  ActiveRecord::Base.remove_connection if @connection_flag
  @connection_flag
end

#create_recordsObject



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/generators/blog_io/install_generator.rb', line 45

def create_records
  BlogSettings.establish_connection(@data['#{Rails.env}'])
  if BlogSettings.all.empty?
    @get_data.each do |name, field|
      BlogSettings.create(original_table_name: name,
        model_name: field['name'],
        primary_key_field: field['pkey'])
    end
  else
    say(BlogIo::RECORD_CHECK)
  end
  BlogSettings.remove_connection
end

#get_user_dataObject



34
35
36
37
38
39
40
41
42
43
# File 'lib/generators/blog_io/install_generator.rb', line 34

def get_user_data
  @get_data = {}
  BlogIo::REMOTE_TABLES.each do |table_name|
    name = ask("Enter model name for #{table_name}:")
    pkey = ask("Enter primary key for #{table_name}:")
    name = table_name if name.blank?
    pkey = "id" if pkey.blank?
    @get_data[table_name]  = {'name' => name, 'pkey' => pkey}
  end
end