Module: Hephaestus::Actions

Included in:
AppBuilder, Generators::Base
Defined in:
lib/hephaestus/actions.rb,
lib/hephaestus/actions/strip_comments_action.rb

Defined Under Namespace

Classes: ExpandJson, StripCommentsAction

Instance Method Summary collapse

Instance Method Details

#action_mailer_asset_host(rails_env, host) ⇒ Object



27
28
29
30
# File 'lib/hephaestus/actions.rb', line 27

def action_mailer_asset_host(rails_env, host)
  config = "config.action_mailer.asset_host = #{host}"
  configure_environment(rails_env, config)
end

#action_mailer_host(rails_env, host) ⇒ Object



22
23
24
25
# File 'lib/hephaestus/actions.rb', line 22

def action_mailer_host(rails_env, host)
  config = "config.action_mailer.default_url_options = { host: #{host} }"
  configure_environment(rails_env, config)
end

#configure_environment(rails_env, config) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/hephaestus/actions.rb', line 32

def configure_environment(rails_env, config)
  inject_into_file(
    "config/environments/#{rails_env}.rb",
    "\n  #{config}",
    before: "\nend",
  )
end

#expand_json(file, data) ⇒ Object



40
41
42
# File 'lib/hephaestus/actions.rb', line 40

def expand_json(file, data)
  action(ExpandJson.new(destination_root, file, data))
end

#gem(*args) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/hephaestus/actions.rb', line 44

def gem(*args)
  options = args.extract_options!
  name, *versions = args

  parts = [quote(name)]

  if (versions = versions.any? ? versions : options.delete(:version))
    versions = Array(versions)
    versions.each do |version|
      parts << quote(version)
    end
  end

  parts << quote(options) unless options.empty?

  str = []
  str << indentation
  str << "gem #{parts.join(", ")}"
  append_file("Gemfile", %(\n#{str.join}\n), verbose: false)
end

#replace_in_file(relative_path, find, replace) ⇒ Object



6
7
8
9
10
11
# File 'lib/hephaestus/actions.rb', line 6

def replace_in_file(relative_path, find, replace)
  path = File.join(destination_root, relative_path)
  contents = File.read(path)
  contents.gsub!(find, replace)
  File.write(path, contents)
end

#replace_in_files(relative_path, find, replace) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/hephaestus/actions.rb', line 13

def replace_in_files(relative_path, find, replace)
  Dir.glob("#{relative_path}/**/*").each do |path|
    next if File.directory?(path)

    path = Pathname.new(path).relative_path_from(relative_path).to_s
    replace_in_file(path, find, replace)
  end
end