sumodev 0.13.1 → 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20d56d896a70dd7ae7a31cd10e685f81bf8990d4
4
- data.tar.gz: b36774176b3439d4d2fb20bb05fbc0aa1933db17
3
+ metadata.gz: b76c8021b88540087b06d6db8def2031bc8caca6
4
+ data.tar.gz: b5d283150c9d3e43c17132aeb2c2cbbcde3ca669
5
5
  SHA512:
6
- metadata.gz: 78b4fc8002008e05a4c9d4801c683462b85765d4434e8da2d1a09e97d7741f95f9fe1b9233ec2f88bb3aaba0867534d64387e467ec2b5eced095036802f3973b
7
- data.tar.gz: 40c63fb7a1c6adf7c6eb4a0cbf4bba7c33336b3e8ab4d61b5f154eebd8f346233f25cdfbb3119d473392dec156a187aef02f1dc331a52fdbd98354bbe7e8717c
6
+ metadata.gz: 1f04e5008f84998df569567cbaf42e035e9554b2919707d1265051b161e4f46e87d5e0ac57a46e8ca208c6b39f1558d3571a18adceb146d9e3a611e6f2e146bb
7
+ data.tar.gz: 2d2d98eef7f47c78d2a92cccd8a598b9257bd2c1b952dfc157766ae8eb6a0e47f71867f3a3c28e9d5675205bdba6bf1e4838e39841de5f6ad09d2b767c127b58
@@ -1,5 +1,53 @@
1
+ require 'open3'
2
+
1
3
  class Sumodev::Command < Thor
2
4
  def self.banner(task, namespace = true, subcommand = false)
3
5
  "#{basename} #{task.formatted_usage(self, true, subcommand)}"
4
6
  end
7
+
8
+ no_commands do
9
+ def run_command_without_output(cmd, in_dir = nil, message = nil, verbose = false)
10
+ if !message.nil?
11
+ say message, :green
12
+ end
13
+
14
+ if cmd.kind_of?(Array)
15
+ real_cmd = cmd.join('; ')
16
+ else
17
+ real_cmd = cmd
18
+ end
19
+
20
+ if !in_dir.nil?
21
+ real_cmd = "cd #{in_dir}; #{real_cmd}"
22
+ end
23
+
24
+ out, error, status = Open3.capture3(real_cmd)
25
+
26
+ puts out if verbose
27
+ raise error if status != 0
28
+
29
+ return CommandOutput.new out, error, status
30
+ end
31
+
32
+ def continue?(message)
33
+ ask colorize("#{message}\nPress a key to continue\n")
34
+ end
35
+
36
+ def colorize(message)
37
+ message = message
38
+ .gsub(/\*(.*)\*/) { "\033[33m\033[1m#{$1}\033[22m\033[0m" }
39
+
40
+ return message
41
+ end
42
+ end
43
+ end
44
+
45
+ class CommandOutput
46
+ attr_reader :out, :error, :status
47
+
48
+ def initialize(out, error, status)
49
+ @out = out
50
+ @error = error
51
+ @status = status
52
+ end
5
53
  end
@@ -1,95 +1,95 @@
1
- require 'sumodev/command'
2
- require 'sumodev/config'
3
- require 'sumodev/sumofile'
4
-
5
- class Sumodev::Commands::Box < Sumodev::Command
6
- namespace :box
7
-
8
- no_commands do
9
- def box_path
10
- possible_paths = [
11
- Dir.pwd,
12
- Sumodev::Config.get('SUMO_VAGRANT_PATH')
13
- ]
14
-
15
- vagrantfile = possible_paths.detect do |path|
16
- File.file?(File.join(File.expand_path(path), "Vagrantfile"))
17
- end || raise("No Vagrant file found in #{possible_paths.join(', ')}")
18
-
19
- File.expand_path(vagrantfile)
20
- end
21
-
22
- def run_vagrant_command(command, *arguments)
23
- # See https://github.com/mitchellh/vagrant/issues/5199#issuecomment-73278236
24
- if ["reload", "halt"].include?(command.split(" ")[0])
25
- system "rm -rf #{box_path}/.vagrant/machines/*/virtualbox/synced_folders"
26
- end
27
- system "cd #{box_path}; vagrant #{command} #{arguments.join(' ')}"
28
- end
29
-
30
- def box_running?
31
- output = `cd #{box_path}; vagrant status`
32
- output =~ /The VM is running/
33
- end
34
-
35
- def configure_port_mapping
36
- return unless Sumodev::Config.true?('SUMO_FORWARD_PORTS')
37
- system "sudo pfctl -f /etc/pf.conf"
38
- end
39
-
40
- def convert_sumofile_into_env_variables
41
- sumofile_path = Dir.pwd + "/Sumofile"
42
-
43
- file = Sumodev::Sumofile.from_file sumofile_path
44
- file.convert_into_json_file
45
- end
46
- end
47
-
48
- desc 'up', "Starts the Vagrant-box"
49
- def up
50
- say("There is already a box running, you should manually start the box. Or halt the running instance", :red) && exit(1) if box_running?
51
-
52
- convert_sumofile_into_env_variables
53
- configure_port_mapping
54
- run_vagrant_command("up", "--provision")
55
- rescue Sumodev::Sumofile::NoSuchFileError
56
- say("No Sumofile found! Please define one so the correct versions will be used!", :red) && exit(1)
57
- end
58
-
59
- desc 'install', "Installs everything required to use the box command"
60
- def install
61
- # install vagrant plugins
62
- %x(vagrant plugin install vagrant-omnibus)
63
- %x(vagrant plugin install vagrant-vbguest)
64
- %x(vagrant plugin install vagrant-berkshelf --plugin-version 2.0.1)
65
- %x(berks vendor berks-cookbooks)
66
-
67
- # install .sumorc file
68
- File.open(File.expand_path("~/.sumorc"), 'w') do |f|
69
- f.write <<-SUMORC
70
- export SUMO_VAGRANT_PATH=""
71
- SUMORC
72
- end unless File.exists?(File.expand_path("~/.sumorc"))
73
-
74
- # setup resolver
75
- File.open("/tmp/vagrant-resolver", 'w') do |f|
76
- f.write <<-RESOLVER
77
- # Created by sumo command
78
- nameserver 10.11.12.13
79
- port 53
80
- RESOLVER
81
- end
82
-
83
- %x(sudo mv /tmp/vagrant-resolver /etc/resolver/vagrant)
84
- end
85
-
86
- # Vagrant commands
87
- %w(halt provision resume reload ssh status suspend).each do |method|
88
- class_eval <<-VAGRANT_METHOD
89
- desc '#{method}', 'Runs the #{method} vagrant command'
90
- def #{method}(*args)
91
- run_vagrant_command("#{method} \#{args.join(' ')}")
92
- end
93
- VAGRANT_METHOD
94
- end
95
- end
1
+ require 'sumodev/command'
2
+ require 'sumodev/config'
3
+ require 'sumodev/sumofile'
4
+
5
+ class Sumodev::Commands::Box < Sumodev::Command
6
+ namespace :box
7
+
8
+ no_commands do
9
+ def box_path
10
+ possible_paths = [
11
+ Dir.pwd,
12
+ Sumodev::Config.get('SUMO_VAGRANT_PATH')
13
+ ]
14
+
15
+ vagrantfile = possible_paths.detect do |path|
16
+ File.file?(File.join(File.expand_path(path), "Vagrantfile"))
17
+ end || raise("No Vagrant file found in #{possible_paths.join(', ')}")
18
+
19
+ File.expand_path(vagrantfile)
20
+ end
21
+
22
+ def run_vagrant_command(command, *arguments)
23
+ # See https://github.com/mitchellh/vagrant/issues/5199#issuecomment-73278236
24
+ if ["reload", "halt"].include?(command.split(" ")[0])
25
+ system "rm -rf #{box_path}/.vagrant/machines/*/virtualbox/synced_folders"
26
+ end
27
+ system "cd #{box_path}; vagrant #{command} #{arguments.join(' ')}"
28
+ end
29
+
30
+ def box_running?
31
+ output = `cd #{box_path}; vagrant status`
32
+ output =~ /The VM is running/
33
+ end
34
+
35
+ def configure_port_mapping
36
+ return unless Sumodev::Config.true?('SUMO_FORWARD_PORTS')
37
+ system "sudo pfctl -f /etc/pf.conf"
38
+ end
39
+
40
+ def convert_sumofile_into_env_variables
41
+ sumofile_path = Dir.pwd + "/Sumofile"
42
+
43
+ file = Sumodev::Sumofile.from_file sumofile_path
44
+ file.convert_into_json_file
45
+ end
46
+ end
47
+
48
+ desc 'up', "Starts the Vagrant-box"
49
+ def up
50
+ say("There is already a box running, you should manually start the box. Or halt the running instance", :red) && exit(1) if box_running?
51
+
52
+ convert_sumofile_into_env_variables
53
+ configure_port_mapping
54
+ run_vagrant_command("up", "--provision")
55
+ rescue Sumodev::Sumofile::NoSuchFileError
56
+ say("No Sumofile found! Please define one so the correct versions will be used!", :red) && exit(1)
57
+ end
58
+
59
+ desc 'install', "Installs everything required to use the box command"
60
+ def install
61
+ # install vagrant plugins
62
+ %x(vagrant plugin install vagrant-omnibus)
63
+ %x(vagrant plugin install vagrant-vbguest)
64
+ %x(vagrant plugin install vagrant-berkshelf)
65
+ %x(berks vendor berks-cookbooks)
66
+
67
+ # install .sumorc file
68
+ File.open(File.expand_path("~/.sumorc"), 'w') do |f|
69
+ f.write <<-SUMORC
70
+ export SUMO_VAGRANT_PATH=""
71
+ SUMORC
72
+ end unless File.exists?(File.expand_path("~/.sumorc"))
73
+
74
+ # setup resolver
75
+ File.open("/tmp/vagrant-resolver", 'w') do |f|
76
+ f.write <<-RESOLVER
77
+ # Created by sumo command
78
+ nameserver 10.11.12.13
79
+ port 53
80
+ RESOLVER
81
+ end
82
+
83
+ %x(sudo mv /tmp/vagrant-resolver /etc/resolver/vagrant)
84
+ end
85
+
86
+ # Vagrant commands
87
+ %w(halt provision resume reload ssh status suspend).each do |method|
88
+ class_eval <<-VAGRANT_METHOD
89
+ desc '#{method}', 'Runs the #{method} vagrant command'
90
+ def #{method}(*args)
91
+ run_vagrant_command("#{method} \#{args.join(' ')}")
92
+ end
93
+ VAGRANT_METHOD
94
+ end
95
+ end
@@ -67,6 +67,24 @@ class Sumodev::Commands::Hooks < Sumodev::Command
67
67
  errors_and_warnings
68
68
  end
69
69
 
70
+ def check_for_merge_conflicts(files)
71
+ methods = [
72
+ {
73
+ :human_readable_message => "Checking for merge conflicts",
74
+ :command => "egrep -no '<<<<<<<' %{file}",
75
+ :line_handler => lambda { |line|
76
+ return build_error_or_warning(
77
+ 'warning',
78
+ line.scan(/([0-9]*):/)[0][0],
79
+ "Merge conflict found: " + line.scan(/[0-9]*:(.*)/)[0][0]
80
+ )
81
+ }
82
+ }
83
+ ]
84
+
85
+ check_files(files, methods)
86
+ end
87
+
70
88
  def check_css_files(files)
71
89
  methods = [
72
90
  {
@@ -1,5 +1,7 @@
1
1
  require 'sumodev/command'
2
2
  require 'sumodev/config'
3
+ require 'open3'
4
+ require 'securerandom'
3
5
 
4
6
  class Sumodev::Commands::Project < Sumodev::Command
5
7
  namespace :project
@@ -48,6 +50,115 @@ class Sumodev::Commands::Project < Sumodev::Command
48
50
  end
49
51
  end
50
52
 
53
+ option :project_path, :desc => "the path where the project should be placed"
54
+ option :bundles, :type => :boolean, :default => true, :desc => "install bundles"
55
+ option :node_modules, :type => :boolean, :default => true, :desc => "install node-modules"
56
+ option :bower, :type => :boolean, :default => true, :desc => "install bower packages"
57
+ option :composer, :type => :boolean, :default => true, :desc => "install composer packages"
58
+ option :composer_run_scripts, :type => :boolean, :default => true, :desc => "run composer scripts"
59
+
60
+ desc 'new fork|framework client project', 'create a new Fork Project'
61
+ def new(type, client, project)
62
+ begin
63
+ if type != "fork"
64
+ raise "Only fork is implemented"
65
+ end
66
+
67
+ repo = "git@git.sumocoders.be:sumocoders/#{client}-#{project}.git"
68
+ repo_url = repo.gsub('.be:', '.be/').gsub('git@', 'http://').gsub('.git', '')
69
+
70
+ # check if repo exists
71
+ begin
72
+ self.run_command_without_output("git ls-remote #{repo}", nil, "--> Check if repo #{repo} exists.")
73
+ rescue Exception => e
74
+ raise "Please create a repository named #{client}-#{project} first:\nhttp://git.sumocoders.be/projects/new"
75
+ end
76
+
77
+ tmp_path = File.expand_path(Sumodev::Config.get('SUMO_TEMP_PATH'));
78
+ sites_path = File.expand_path(Sumodev::Config.get('SUMO_SITES_PATH'))
79
+
80
+ if options[:project_path].nil?
81
+ project_path = File.expand_path("#{sites_path}/#{client}/#{project}")
82
+ else
83
+ project_path = File.expand_path(options[:project_path])
84
+ end
85
+
86
+ clone_repo("git://github.com/sumocoders/forkcms.git", "#{tmp_path}/temp_project")
87
+ run_command_without_output("rm -rf #{tmp_path}/temp_project/.git")
88
+ initialize_repo("#{tmp_path}/temp_project", repo)
89
+
90
+ # ask to set the default branch to staging
91
+ run_command_without_output("open #{repo_url}/edit")
92
+ continue?("Gitlab will now open, change the default branch to *staging*")
93
+
94
+ move_project("#{tmp_path}/temp_project", project_path)
95
+ populate_capfile("#{project_path}/Capfile", client, project, repo)
96
+
97
+ # install assets
98
+ install_bundles(project_path) if options[:bundles]
99
+ install_node_modules(project_path) if options[:node_modules]
100
+ install_bower_packages(project_path) if options[:bower]
101
+ install_composer_packages(project_path, options[:composer_run_scripts]) if options[:composer]
102
+
103
+ # create database
104
+ run_command_without_output(
105
+ [
106
+ "bundle exec cap staging sumodev:db:create",
107
+ "bundle exec cap staging sumodev:db:get"
108
+ ],
109
+ project_path,
110
+ "--> Creating database on staging and local"
111
+ )
112
+
113
+ # grab database information
114
+ output = run_command_without_output("bundle exec cap staging sumodev:db:info 2>&1", project_path)
115
+ database_information = output.out
116
+ .gsub("** [out :: dev.sumocoders.be] ", "")
117
+ .gsub("\n", "")
118
+
119
+ database_name = database_information.scan(/database:(.*)user/)[0][0].gsub(/\s+/, '')
120
+ database_user = database_information.scan(/user:(.*)pass/)[0][0].gsub(/\s+/, '')
121
+ database_password = database_information.scan(/pass:(.*)command/)[0][0].gsub(/\s+/, '')
122
+
123
+ run_command_without_output(
124
+ "sed -i '' -e 's|site.path_www:.*|site.path_www: /home/sites/#{client}/#{project}|g' #{project_path}/app/config/parameters_install.yml",
125
+ nil,
126
+ "--> Configuring parameters_install.yml"
127
+ )
128
+ run_command_without_output("rm -rf #{project_path}/app/cache/install")
129
+
130
+ # run the installer
131
+ run_command_without_output("open http://#{project}.#{client}.dev")
132
+ continue?("The installer will now open.\nYou can use *#{database_name}* as the database_name.")
133
+
134
+ install_initial_theme(project_path, database_name)
135
+
136
+ # commit our changes
137
+ run_command_without_output(
138
+ [
139
+ "git add Capfile",
140
+ "git add app/config/parameters_install.yml",
141
+ "git add package.json",
142
+ "git add Gemfile.lock",
143
+ "git add src/Frontend/Themes/Custom",
144
+ "git commit -m 'Init configuration of the project'",
145
+ "git push"
146
+ ],
147
+ project_path,
148
+ "--> Commiting the initial configuration of the project"
149
+ )
150
+
151
+ # deploy
152
+ initial_deploy(project_path, client, project, database_name, database_user, database_password)
153
+ deploy(project_path, "staging")
154
+
155
+ change_location(project_path)
156
+ say "All done", :green
157
+ rescue Exception => e
158
+ say e.message, :red
159
+ end
160
+ end
161
+
51
162
  no_commands do
52
163
  def get_client(path)
53
164
  return get_var(path, "client")
@@ -70,9 +181,27 @@ class Sumodev::Commands::Project < Sumodev::Command
70
181
  end
71
182
 
72
183
  def clone_repo(repo, destination)
73
- say "Cloning repo #{repo}", :green
74
- system "rm -rf #{destination}"
75
- system "git clone -q #{repo} #{destination} > /dev/null"
184
+ run_command_without_output(
185
+ "rm -rf #{destination}; git clone #{repo} #{destination}",
186
+ nil,
187
+ "--> Cloning repo #{repo}"
188
+ )
189
+ end
190
+
191
+ def initialize_repo(path, repo)
192
+ run_command_without_output(
193
+ [
194
+ "git init",
195
+ "git add .",
196
+ "git commit -n -m 'Initial commit'",
197
+ "git remote add origin #{repo}",
198
+ "git push -u origin master",
199
+ "git checkout -b staging",
200
+ "git push -u origin staging"
201
+ ],
202
+ path,
203
+ "--> Initialize repo #{repo}"
204
+ )
76
205
  end
77
206
 
78
207
  def process_capfile(path)
@@ -96,13 +225,27 @@ class Sumodev::Commands::Project < Sumodev::Command
96
225
  ]
97
226
  end
98
227
 
228
+ def populate_capfile(path, client, project, repo)
229
+ unless File.file?(path)
230
+ raise "No Capfile found"
231
+ end
232
+
233
+ say "--> Configuring Capfile", :green
234
+
235
+ content = File.read(path)
236
+ .gsub(/set :client,.*/, "set :client, \"#{client}\"")
237
+ .gsub(/set :project,.*/, "set :project, \"#{project}\"")
238
+ .gsub(/set :repository,.*/, "set :repository, \"#{repo}\"")
239
+
240
+ File.write(path, content)
241
+ end
242
+
99
243
  def install_bundles(path)
100
244
  unless File.file?("#{path}/Gemfile")
101
245
  return
102
246
  end
103
247
 
104
- say "Installing gems", :green
105
- system "cd #{path}; bundle install"
248
+ run_command_without_output("bundle install", path, "--> Installing gems")
106
249
  end
107
250
 
108
251
  def install_node_modules(path)
@@ -110,8 +253,7 @@ class Sumodev::Commands::Project < Sumodev::Command
110
253
  return
111
254
  end
112
255
 
113
- say "Installing node modules", :green
114
- system "cd #{path}; npm install"
256
+ run_command_without_output("npm install", path, "--> Installing node modules")
115
257
  end
116
258
 
117
259
  def install_bower_packages(path)
@@ -119,23 +261,36 @@ class Sumodev::Commands::Project < Sumodev::Command
119
261
  return
120
262
  end
121
263
 
122
- say "Installing bower packages", :green
123
- system "cd #{path}; bower install"
264
+ run_command_without_output("bower install", path, "--> Installing bower packages")
124
265
  end
125
266
 
126
267
  def install_composer_packages(path, run_scripts)
127
268
  unless File.file?("#{path}/composer.json")
128
- puts "foo"
129
269
  return
130
270
  end
131
271
 
132
- say "Installing dependencies", :green
272
+ cmd = "composer install"
133
273
 
134
- if run_scripts
135
- system "cd #{path}; composer install"
136
- else
137
- system "cd #{path}; composer install --no-scripts"
274
+ if !run_scripts
275
+ cmd = "#{cmd} --no-scripts"
138
276
  end
277
+
278
+ run_command_without_output(cmd, path, "--> Installing composer dependencies")
279
+ end
280
+
281
+ def install_initial_theme(path, database)
282
+ run_command_without_output(
283
+ [
284
+ "php tools/install_locale.php -f src/Frontend/Themes/Bootstrap/locale.xml",
285
+ "cp -r src/Frontend/Themes/Bootstrap src/Frontend/Themes/Custom",
286
+ "sed -i '' -e 's|.*<name>bootstrap</name>.*| <name>custom</name>|g' src/Frontend/Themes/Custom/info.xml",
287
+ "sed -i '' -e 's/set :theme.*/set :theme, \"Custom\"/g' Capfile",
288
+ "sed -i '' -e 's/.*\"theme\":.*/ \"theme\": \"Custom\",/g' package.json",
289
+ "mysql #{database} -e \"UPDATE modules_settings SET value='s:6:\\\"Custom\\\"' where module='Core' and name='theme'\""
290
+ ],
291
+ path,
292
+ "--> Creating the initial Custom theme"
293
+ )
139
294
  end
140
295
 
141
296
  def move_project(source, destination)
@@ -143,9 +298,14 @@ class Sumodev::Commands::Project < Sumodev::Command
143
298
  raise "Project folder already exists."
144
299
  end
145
300
 
146
- say "Creating and moving everything into place", :green
147
- system "mkdir -p #{destination}; cd #{destination}"
148
- system "shopt -s dotglob; mv #{source}/* #{destination}"
301
+ run_command_without_output(
302
+ [
303
+ "mkdir -p #{destination}",
304
+ "shopt -s dotglob; mv #{source}/* #{destination}"
305
+ ],
306
+ nil,
307
+ "--> Moving everything into place"
308
+ )
149
309
  end
150
310
 
151
311
  def fetch_data(path, stage)
@@ -165,7 +325,7 @@ class Sumodev::Commands::Project < Sumodev::Command
165
325
  return
166
326
  end
167
327
 
168
- content = File.read(version_path)
328
+ content = File.read("#{path}/VERSION.md")
169
329
  min_version = Gem::Version.new('3.6')
170
330
  project_version = Gem::Version.new(content)
171
331
 
@@ -183,8 +343,43 @@ class Sumodev::Commands::Project < Sumodev::Command
183
343
  end
184
344
  end
185
345
 
346
+ def initial_deploy(path, client, project, database_name, database_user, database_password)
347
+ content = File.read("#{path}/app/config/parameters.yml")
348
+ content = content
349
+ .gsub(/database.host:.*/, "database.host: 127.0.0.1")
350
+ .gsub(/database.name:.*/, "database.name: #{database_name}")
351
+ .gsub(/database.user:.*/, "database.user: #{database_user}")
352
+ .gsub(/database.password:.*/, "database.password: #{database_password}")
353
+ .gsub(/site.domain:.*/, "site.domain: #{project}.#{client}.sumocoders.eu")
354
+ File.write("#{path}/app/config/parameters.dev.yml", content)
355
+
356
+ run_command_without_output(
357
+ [
358
+ "bundle exec cap deploy:setup",
359
+ "bundle exec cap deploy",
360
+ "bundle exec cap sumodev:db:put",
361
+ "bundle exec cap sumodev:db:lock",
362
+ "scp app/config/parameters.dev.yml sites@dev.sumocoders.eu:/home/sites/apps/#{client}/#{project}/shared/config/parameters.yml",
363
+ "rm #{path}/app/config/parameters.dev.yml"
364
+ ],
365
+ path,
366
+ "--> Running initial deploy, aka deploy:setup"
367
+ )
368
+ end
369
+
370
+ def deploy(path, stage)
371
+ run_command_without_output(
372
+ [
373
+ "grunt build",
374
+ "bundle exec cap #{stage} deploy"
375
+ ],
376
+ path,
377
+ "--> Deploying to #{stage}"
378
+ )
379
+ end
380
+
186
381
  def change_location(destination)
187
- say "Your project is located in:\n#{destination}"
382
+ say colorize("Your project is located in: *#{destination}*"), :green
188
383
  end
189
384
  end
190
385
  end
@@ -1,3 +1,3 @@
1
1
  module Sumodev
2
- VERSION = "0.13.1"
2
+ VERSION = "0.13.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sumodev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan De Poorter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-27 00:00:00.000000000 Z
11
+ date: 2015-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport