Class: ActiveAsari::Migrations

Inherits:
Object
  • Object
show all
Defined in:
lib/active_asari/migrations.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMigrations

Returns a new instance of Migrations.



6
7
8
# File 'lib/active_asari/migrations.rb', line 6

def initialize 
  self.connection = AWS::CloudSearch::Client.new
end

Instance Attribute Details

#connectionObject

Returns the value of attribute connection.



4
5
6
# File 'lib/active_asari/migrations.rb', line 4

def connection
  @connection
end

Instance Method Details

#create_domain(domain) ⇒ Object



56
57
58
# File 'lib/active_asari/migrations.rb', line 56

def create_domain(domain)
  connection.create_domain :domain_name => ActiveAsari.amazon_safe_domain_name(domain)        
end

#create_index_field(domain, field) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/active_asari/migrations.rb', line 36

def create_index_field(domain, field)
  index_field_name = field.keys.first
  index_field_type = field[index_field_name]['index_field_type']
  search_enabled = field[index_field_name]['search_enabled']
  if search_enabled == nil or search_enabled.blank?
    search_enabled = false
  end
  

  request = {:domain_name => ActiveAsari.amazon_safe_domain_name(domain), :index_field => {:index_field_name => index_field_name,
  :index_field_type => index_field_type}}
  case index_field_type 
  when 'literal'
    request[:index_field][:literal_options] = {:search_enabled => search_enabled, :result_enabled => true}
  when 'text'
    request[:index_field][:text_options] = {:result_enabled => true}
  end
  connection.define_index_field request
end

#migrate_allObject



10
11
12
13
14
# File 'lib/active_asari/migrations.rb', line 10

def migrate_all
  ACTIVE_ASARI_CONFIG.keys.each do |domain|
    migrate_domain domain
  end
end

#migrate_domain(domain) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/active_asari/migrations.rb', line 16

def migrate_domain(domain)
  create_domain domain
  ACTIVE_ASARI_CONFIG[domain].each do |field|
    create_index_field domain, field.first => field.last
  end
  create_index_field domain, 'active_asari_id' => {'index_field_type' => 'uint'}
  connection.index_documents :domain_name => ActiveAsari.amazon_safe_domain_name(domain)
  update_service_access_policies ActiveAsari.amazon_safe_domain_name(domain)
end

#update_service_access_policies(domain) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/active_asari/migrations.rb', line 26

def update_service_access_policies(domain)
  policy_array = []
  asari_env = ENV['RAILS_ENV'] ? ENV['RAILS_ENV'] : ENV['RACK_ENV'] 
  ACTIVE_ASARI_ENV[asari_env]['access_permissions'].each do |permission|
    policy_array << {:Effect => :Allow, :Action => '*', :Resource => '*', :Condition => {:IpAddress => {'aws:SourceIp' => [permission['ip_address']]}}} 
  end
  access_policies = {:Statement => policy_array}
  connection.update_service_access_policies :domain_name => domain, :access_policies => access_policies.to_json
end