Class: I18n::Migrations::Backends::CrowdTranslateBackend

Inherits:
Object
  • Object
show all
Defined in:
lib/i18n/migrations/backends/crowd_translate_backend.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client: CrowdTranslateClient.new) ⇒ CrowdTranslateBackend

Returns a new instance of CrowdTranslateBackend.



9
10
11
# File 'lib/i18n/migrations/backends/crowd_translate_backend.rb', line 9

def initialize(client: CrowdTranslateClient.new)
  @client = client
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



7
8
9
# File 'lib/i18n/migrations/backends/crowd_translate_backend.rb', line 7

def client
  @client
end

Instance Method Details

#force_push(locale) ⇒ Object

this will replace everything about a locale, it will create a locale that does not yet exist



27
28
29
30
31
32
33
34
# File 'lib/i18n/migrations/backends/crowd_translate_backend.rb', line 27

def force_push(locale)
  data,  = locale.(parse: false)
  client.put_locale(locale.name,
                    name: locale.name,
                    yaml_file: data,
                    yaml_metadata_file: )

end

#pull(locale) ⇒ Object



13
14
15
16
# File 'lib/i18n/migrations/backends/crowd_translate_backend.rb', line 13

def pull(locale)
  pull_from_crowd_translate(locale)
  locale.migrate!
end

#pull_from_crowd_translate(locale) ⇒ Object



36
37
38
39
40
# File 'lib/i18n/migrations/backends/crowd_translate_backend.rb', line 36

def pull_from_crowd_translate(locale)
  data = client.get_locale_file(locale.name)
  locale.data_file.write(data)
  locale.write_remote_version(YAML::load(data)[locale.name])
end

#push(locale, force: false) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/i18n/migrations/backends/crowd_translate_backend.rb', line 18

def push(locale, force: false)
  if force
    force_push(locale)
  end

  pull(locale)
end

#sync_migrations(migrations) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/i18n/migrations/backends/crowd_translate_backend.rb', line 42

def sync_migrations(migrations)
  local_versions = migrations.all_versions
  remote_versions = client.get_migration_versions

  if (extra_versions = remote_versions - local_versions).present?
    raise("You may not upload migrations to the server because it has migrations not found locally: " +
            "#{extra_versions.join(', ')}")
  end

  if (versions_to_add = local_versions - remote_versions).present?
    versions_to_add.each do |version|
      begin
        client.put_migration(version: version, ruby_file: migrations.get_migration(version: version))
      rescue
        puts "There was an error updating migration:".red
        puts "  #{migrations.migration_file(version: version)}".bold
        raise
      end
    end
  end
end