class TmattCms::Generators::InstallGenerator

Public Instance Methods

add_application_yml() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 40
def add_application_yml
  copy_file 'config/application.yml', 'config/application.yml'

  filename = 'config/application.rb'
  if File.readlines(filename).grep(/application\.yml/).size == 0
    insert_at_line(filename, 8, ["\nENV.update YAML.load_file('config/application.yml')[Rails.env] rescue {}"])
  end
end
add_dashboard() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 223
def add_dashboard
  copy_file 'css/layouts/dashboard.css.scss', 'app/assets/stylesheets/layouts/dashboard.css.scss'
  copy_file 'views/dashboard/partial/_sidebar.html.haml', 'app/views/dashboard/partial/_sidebar.html.haml'
  copy_file 'views/layouts/dashboard.html.haml', 'app/views/layouts/dashboard.html.haml'

  filename = 'config/routes.rb'
  if File.readlines(filename).grep(/dashboard/).size == 0
    line_count = get_line_count filename
    insert_at_line(filename, line_count - 1, ["\n\tnamespace :dashboard do", "\n\tend"])
  end
end
add_front_page() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 250
def add_front_page
  copy_file 'views/pages/index.html.haml', 'app/views/pages/index.html.haml'
  copy_file 'controllers/pages_controller.rb', 'app/controllers/pages_controller.rb'

  filename = 'config/routes.rb'
  if File.readlines(filename).grep(/pages#index/).size == 0
    line_count = get_line_count filename
    insert_at_line(filename, line_count - 1, ["\n\troot 'pages#index'"])
  end
end
add_image_cover() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 235
def add_image_cover
  copy_file 'views/utils/_image_cover.html.haml', 'app/views/utils/_image_cover.html.haml'
end
add_polyfills_js() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 168
def add_polyfills_js
  if File.readlines('config/initializers/assets.rb').grep(/polyfills/).size == 0
    File.open(File.join('config', 'initializers', 'assets.rb'), 'a+') do |f|
      f.puts "\n\n"
      f.puts 'Rails.application.config.assets.precompile += %w( polyfills.js )'
    end
  end
end
config_action_alert() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 266
def config_action_alert
  copy_file 'css/utils/action_alert.css.scss', 'app/assets/stylesheets/utils/action_alert.css.scss'
  copy_file 'js/utils/action_alert.js', 'app/assets/javascripts/utils/action_alert.js'
end
config_application_helper() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 288
def config_application_helper
  copy_file 'helpers/application_helper.rb', 'app/helpers/application_helper.rb'
end
config_application_rb() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 19
def config_application_rb
  filename = 'config/application.rb'

  if File.readlines(filename).grep(/concerns/).size == 0
    line_count = get_line_count filename
    insert_at_line(filename, line_count - 2, [
        "\n\t\tconfig.autoload_paths += %W(\#{config.root}/app/models/concerns)"
    ])
  end

  if File.readlines(filename).grep(/DATE_FORMATS/).size == 0
    line_count = get_line_count filename
    insert_at_line(filename, line_count - 2, [
        "\n\t\tTime::DATE_FORMATS[:aus] = '%l:%M %p on %d %B %Y'",
        "\t\tDate::DATE_FORMATS[:aus] = '%d %B %Y'",
        "\t\tTime::DATE_FORMATS[:zh] = '%l:%M %p on %d %B %Y'",
        "\t\tDate::DATE_FORMATS[:zh] = '%d %B %Y'",
    ])
  end
end
config_carrier_wave() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 292
def config_carrier_wave
  copy_file 'config/initializers/carrier_wave.rb', 'config/initializers/carrier_wave.rb'
end
config_deploy() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 243
def config_deploy
  remove_file 'config/deploy.rb'

  @application_name = application_name
  template    'config/deploy.rb',     'config/deploy.rb'
end
config_devise_async() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 261
def config_devise_async
  copy_file 'config/initializers/devise_async.rb', 'config/initializers/devise_async.rb'
  copy_file 'config/sidekiq.yml', 'config/sidekiq.yml'
end
config_froala() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 271
def config_froala
  copy_file 'css/utils/froala/froala_editor.min.css.scss', 'app/assets/stylesheets/utils/froala/froala_editor.min.css.scss'
  copy_file 'css/utils/froala/froala_style.min.css.scss', 'app/assets/stylesheets/utils/froala/froala_style.min.css.scss'
  copy_file 'css/utils/froala/plugins/colors.css.scss', 'app/assets/stylesheets/utils/froala/plugins/colors.css.scss'
  copy_file 'css/utils/froala/plugins/help.css.scss', 'app/assets/stylesheets/utils/froala/plugins/help.css.scss'
  copy_file 'css/utils/froala/plugins/image.css.scss', 'app/assets/stylesheets/utils/froala/plugins/image.css.scss'
  copy_file 'css/utils/froala/plugins/image_manager.css.scss', 'app/assets/stylesheets/utils/froala/plugins/image_manager.css.scss'
  copy_file 'css/utils/froala/plugins/line_breaker.css.scss', 'app/assets/stylesheets/utils/froala/plugins/line_breaker.css.scss'
  copy_file 'css/utils/froala/plugins/quick_insert.css.scss', 'app/assets/stylesheets/utils/froala/plugins/quick_insert.css.scss'
  copy_file 'css/utils/froala/plugins/special_characters.css.scss', 'app/assets/stylesheets/utils/froala/plugins/special_characters.css.scss'
  copy_file 'css/utils/froala/plugins/table.css.scss', 'app/assets/stylesheets/utils/froala/plugins/table.css.scss'
  copy_file 'css/utils/froala/plugins/video.css.scss', 'app/assets/stylesheets/utils/froala/plugins/video.css.scss'

  copy_file 'js/utils/froala_editor.js', 'app/assets/javascripts/utils/froala_editor.js'

end
config_google_smtp() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 49
def config_google_smtp
  filename = 'config/environments/development.rb'
  if File.readlines(filename).grep(/smtp/).size == 0
    line_count = get_line_count filename
    insert_at_line(filename, line_count - 1, [
        "\n\tconfig.action_mailer.default_url_options = { :host => ENV['DEVELOPMENT_URL'] }",
        "\tconfig.action_mailer.default_options = { from: ENV['MAILER_DEFAULT_FROM'] }",
        "\tconfig.action_mailer.delivery_method = :smtp",
        "\tconfig.action_mailer.smtp_settings = {",
        "\t\t:address => ENV['SMTP_ADDRESS'],",
        "\t\t:domain => ENV['SMTP_DOMAIN'],",
        "\t\t:port => ENV['SMTP_PORT'].to_i,",
        "\t\t:user_name => ENV['MAILER_EMAIL'],",
        "\t\t:password => ENV['MAILER_PASSWORD'],",
        "\t\t:authentication => :plain",
        "\t}",
    ])
  end

  filename = 'config/environments/production.rb'
  if File.readlines(filename).grep(/smtp/).size == 0
    line_count = get_line_count filename
    insert_at_line(filename, line_count - 1, [
        "\n\tconfig.action_mailer.default_url_options = { :host => ENV['PRODUCTION_URL'] }",
        "\tconfig.action_mailer.asset_host = \"\#{ENV['PROTOCOL']}\#{ENV['PRODUCTION_URL']}\"",
        "\tconfig.action_mailer.default_options = { from: ENV['MAILER_DEFAULT_FROM'] }",
        "\tconfig.action_mailer.delivery_method = :smtp",
        "\tconfig.action_mailer.smtp_settings = {",
        "\t\t:address => ENV['SMTP_ADDRESS'],",
        "\t\t:domain => ENV['SMTP_DOMAIN'],",
        "\t\t:port => ENV['SMTP_PORT'].to_i,",
        "\t\t:user_name => ENV['MAILER_EMAIL'],",
        "\t\t:password => ENV['MAILER_PASSWORD'],",
        "\t\t:authentication => :plain,",
        "\t\t:enable_starttls_auto => true",
        "\t}",
    ])
  end
end
config_head() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 214
def config_head
  copy_file 'views/application/_head.html.haml', 'app/views/application/_head.html.haml'
  copy_file 'views/application/_head_dashboard.html.haml', 'app/views/application/_head_dashboard.html.haml'
end
config_jasny_bootstrap() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 201
def config_jasny_bootstrap
  copy_file 'css/utils/jasny-bootstrap.min.css', 'app/assets/stylesheets/utils/jasny-bootstrap.min.css'
  copy_file 'js/utils/jasny-bootstrap.min.js', 'app/assets/javascripts/utils/jasny-bootstrap.min.js'

  if File.readlines('config/initializers/assets.rb').grep(/jasny/).size == 0
    File.open(File.join('config', 'initializers', 'assets.rb'), 'a+') do |f|
      f.puts "\n\n"
      f.puts 'Rails.application.config.assets.precompile += %w( utils/jasny-bootstrap.min.css )'
      f.puts 'Rails.application.config.assets.precompile += %w( utils/jasny-bootstrap.min.js )'
    end
  end
end
config_locales() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 98
def config_locales
  copy_file 'config/locales/views/dashboard/en.yml', 'config/locales/views/dashboard/en.yml'
  copy_file 'config/locales/views/dashboard/zh.yml', 'config/locales/views/dashboard/zh.yml'
  copy_file 'config/locales/views/global/en.yml', 'config/locales/views/global/en.yml'
  copy_file 'config/locales/views/global/zh.yml', 'config/locales/views/global/zh.yml'

  filename = 'config/application.rb'
  if File.readlines(filename).grep(/config', 'locales', '\*\*'/).size == 0
    line_count = get_line_count filename
    insert_at_line(filename, line_count - 2, [
        "\n\t\tconfig.i18n.enforce_available_locales = false",
        "\t\tconfig.i18n.fallbacks = true",
        "\t\tconfig.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]",
        "\t\tconfig.i18n.default_locale = 'en'",
    ])
  end
end
config_magnific_popup_rails() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 177
def config_magnific_popup_rails
  copy_file 'css/application/magnific_popup_rails.css.scss', 'app/assets/stylesheets/application/magnific_popup_rails.css.scss'
  copy_file 'js/utils/magnificPopup.js', 'app/assets/javascripts/utils/magnificPopup.js'

  if File.readlines('config/initializers/assets.rb').grep(/magnificPopup/).size == 0
    File.open(File.join('config', 'initializers', 'assets.rb'), 'a+') do |f|
      f.puts "\n\n"
      f.puts 'Rails.application.config.assets.precompile += %w( utils/magnificPopup.js )'
    end
  end
end
config_seed_bank() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 162
def config_seed_bank
  copy_file 'seed_bank/all.seeds.rb', 'db/seeds/all.seeds.rb'
  copy_file '.keep', 'db/seeds/resources/images/.keep'
  copy_file '.keep', 'db/seeds/resources/csv/.keep'
end
config_sidekiq() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 189
def config_sidekiq
  copy_file 'config/initializers/active_job.rb', 'config/initializers/active_job.rb'

  if File.readlines('Capfile').grep(/sidekiq/).size == 0
    File.open(File.join('Capfile'), 'a+') do |f|
      f.puts "\n\n"
      f.puts "require 'capistrano/sidekiq'"
      f.puts "# require 'capistrano/sidekiq/monit'"
    end
  end
end
copy_application_layout() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 158
def copy_application_layout
  copy_file 'views/layouts/application.html.haml', 'app/views/layouts/application.html.haml'
end
copy_db_init() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 116
def copy_db_init
  copy_file 'concerns/db_init.rb', 'app/models/concerns/db_init.rb'
end
copy_gemfile() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 239
def copy_gemfile
  copy_file 'gemfile/Gemfile', 'Gemfile'
end
copy_git_ignore() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 15
def copy_git_ignore
  copy_file 'git_ignore/gitignore', '.gitignore'
end
copy_input_files() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 89
def copy_input_files
  copy_file 'inputs/concerns/translation_hint.rb', 'app/inputs/concerns/translation_hint.rb'
  copy_file 'inputs/translation_input.rb', 'app/inputs/translation_input.rb'
end
copy_javascript_files() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 151
def copy_javascript_files
  copy_file 'js/utils/body_util.js', 'app/assets/javascripts/utils/body_util.js'

  remove_file 'app/assets/javascripts/application.js'
  copy_file 'js/application.js', 'app/assets/javascripts/application.js'
end
copy_pretty_url() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 120
def copy_pretty_url
  remove_file 'app/models/concerns/pretty_url.rb'
  copy_file 'concerns/pretty_url.rb', 'app/models/concerns/pretty_url.rb'
end
copy_string_addition() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 125
def copy_string_addition
  copy_file 'concerns/string_addition.rb', 'app/models/concerns/string_addition.rb'
end
copy_stylesheet_files() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 129
def copy_stylesheet_files
  copy_file 'css/application/main.css.scss', 'app/assets/stylesheets/application/main.css.scss'
  copy_file 'css/application/mixin.css.scss', 'app/assets/stylesheets/application/mixin.css.scss'
  copy_file 'css/application/z_index.css.scss', 'app/assets/stylesheets/application/z_index.css.scss'
  copy_file 'css/application/variables.css.scss', 'app/assets/stylesheets/application/variables.css.scss'

  remove_file 'app/assets/stylesheets/application/application.css'
  copy_file 'css/application/application.scss', 'app/assets/stylesheets/application/application.scss'

  remove_file 'app/assets/stylesheets/application/index.css.scss'
  copy_file 'css/application/index.css.scss', 'app/assets/stylesheets/application/index.css.scss'

  remove_file 'app/assets/stylesheets/style.css.scss'
  copy_file 'css/style.css.scss', 'app/assets/stylesheets/style.css.scss'

  remove_file 'app/assets/stylesheets/style.responsive.css.scss'
  copy_file 'css/style.responsive.css.scss', 'app/assets/stylesheets/style.responsive.css.scss'

  copy_file 'css/layouts/header.css.scss', 'app/assets/stylesheets/layouts/header.css.scss'
  copy_file 'css/layouts/footer.css.scss', 'app/assets/stylesheets/layouts/footer.css.scss'
end
copy_translatable() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 94
def copy_translatable
  copy_file 'concerns/translatable.rb', 'app/models/concerns/translatable.rb'
end
remove_double() click to toggle source

class_option :globalize, :type => :boolean, :default => true, :description => 'Include translatable files'

# File lib/generators/tmatt_cms/install_generator.rb, line 11
def remove_double
  remove_file 'app/models/double.rb'
end

Private Instance Methods

application_name() click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 334
def application_name
  if defined?(Rails) && Rails.application
    Rails.application.class.name.split('::').first.underscore
  else
    'application'
  end
end
get_line_count(filename) click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 302
def get_line_count(filename)
  `wc -l "#{filename}"`.strip.split(' ')[0].to_i + 1
end
get_line_number(file, word) click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 320
def get_line_number(file, word)
  count = 0
  File.open(file, "r") { |f| f.each_line { |line|
    count += 1
    return count if line =~ /#{word}/
  }}
end
insert_at_line(filename, at_line, contents, append_rest = true) click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 306
def insert_at_line(filename, at_line, contents, append_rest = true)
  open(filename, 'r+') do |f|
    while (at_line-=1) > 0
      f.readline
    end

    pos = f.pos
    rest = f.read
    f.seek pos

    f.puts append_rest ? contents + [rest] : contents
  end
end
override_line(file_path, line_number, new_line) click to toggle source
# File lib/generators/tmatt_cms/install_generator.rb, line 328
def override_line(file_path, line_number, new_line)
  lines = File.readlines(file_path)
  lines[line_number - 1] = new_line << $/
  File.open(file_path, 'w') { |f| f.write(lines.join) }
end