Class: Conjure::Service::RailsCodebase

Inherits:
Object
  • Object
show all
Defined in:
lib/conjure/service/rails_codebase.rb

Instance Method Summary collapse

Constructor Details

#initialize(target, github_url, branch, rails_environment) ⇒ RailsCodebase

Returns a new instance of RailsCodebase.



4
5
6
7
8
9
# File 'lib/conjure/service/rails_codebase.rb', line 4

def initialize(target, github_url, branch, rails_environment)
  @github_url = github_url
  @branch = branch
  @rails_environment = rails_environment
  @target = target
end

Instance Method Details

#configure_databaseObject



43
44
45
46
# File 'lib/conjure/service/rails_codebase.rb', line 43

def configure_database
  Log.info "[  repo] Generating database.yml"
  volume.write "config/database.yml", database_yml
end

#configure_logsObject



48
49
50
51
52
# File 'lib/conjure/service/rails_codebase.rb', line 48

def configure_logs
  Log.info "[  repo] Configuring application logger"
  setup = 'Rails.logger = Logger.new "#{Rails.root}/log/#{Rails.env}.log"'
  volume.write "config/initializers/z_conjure_logger.rb", setup
end

#databaseObject



58
59
60
# File 'lib/conjure/service/rails_codebase.rb', line 58

def database
  @database ||= Database.new :target => @target, :codebase => self
end

#database_ymlObject



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/conjure/service/rails_codebase.rb', line 11

def database_yml
  {
    @rails_environment => {
      "adapter" => database.adapter_name,
      "database" => database.name,
      "encoding" => "utf8",
      "host" => database.ip_address,
      "username" => "root",
      "template" => "template0",
    }
  }.to_yaml
end

#gem_namesObject



54
55
56
# File 'lib/conjure/service/rails_codebase.rb', line 54

def gem_names
  volume.read("Gemfile").scan(/gem ['"]([^'"]+)['"]/).flatten
end

#installObject



24
25
26
27
28
# File 'lib/conjure/service/rails_codebase.rb', line 24

def install
  repository_link.update
  configure_database
  configure_logs
end


30
31
32
33
34
35
36
37
# File 'lib/conjure/service/rails_codebase.rb', line 30

def repository_link
  @repository_link ||= RepositoryLink.new(
    :volume => volume,
    :branch => @branch,
    :origin_url => @github_url,
    :public_key => Conjure.identity.public_key_data.gsub("\n", "\\n"),
  )
end

#volumeObject



39
40
41
# File 'lib/conjure/service/rails_codebase.rb', line 39

def volume
  @volume ||= Volume.new(:target => @target, :host_path => "/rails_app", :container_path => "/application_root")
end