9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'app/models/caboose/timezone.rb', line 9
def self.load_zones(temp_dir = '/tmp', country_codes = ['US'])
`curl -o #{temp_dir}/timezones.csv.zip http://timezonedb.com/files/timezonedb.csv.zip`
`unzip #{temp_dir}/timezones.csv.zip -d #{temp_dir}/timezones`
File.foreach("#{temp_dir}/timezones/zone.csv") do |line|
data = CSV.parse_line(line)
next if !country_codes.include?(data[1])
next if Caboose::Timezone.where(:id => data[0].to_i).exists?
Caboose::Timezone.create(
:id => data[0].to_i,
:country_code => data[1],
:name => data[2]
)
end
File.foreach("#{temp_dir}/timezones/timezone.csv") do |line|
data = CSV.parse_line(line)
tz_id = data[0].to_i
next if !Caboose::Timezone.where(:id => tz_id).exists?
next if Caboose::TimezoneOffset.where(:timezone_id => tz_id, :time_start => data[2].to_i).exists?
Caboose::TimezoneOffset.create(
:timezone_id => data[0].to_i,
:abbreviation => data[1],
:time_start => data[2],
:gmt_offset => data[3],
:dst => data[4]
)
end
spec = Gem::Specification.find_by_name("caboose-cms")
gem_root = spec.gem_dir
File.foreach(gem_root + '/lib/sample_files/timezone_abbreviations.csv') do |line|
data = CSV.parse_line(line)
next if Caboose::TimezoneAbbreviation.where(:abbreviation => data[0]).exists?
Caboose::TimezoneAbbreviation.create(
:abbreviation => data[0],
:name => data[1]
)
end
`rm -rf #{temp_dir}/timezones`
`rm -rf #{temp_dir}/timezones.csv.zip`
end
|