ruboto-core 0.4.0 → 0.4.1.rc.4
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.
- data/Gemfile.lock +1 -1
- data/Rakefile +15 -5
- data/assets/Rakefile +80 -54
- data/assets/src/InheritingActivity.java +7 -1
- data/lib/ruboto/commands/base.rb +4 -3
- data/lib/ruboto/util/update.rb +8 -1
- data/lib/ruboto/version.rb +1 -1
- data/test/activity/stack_activity_test.rb +0 -1
- data/test/app_test_methods.rb +1 -0
- metadata +13 -9
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'rexml/document'
|
2
|
+
require 'lib/ruboto/version'
|
2
3
|
|
3
4
|
PLATFORM_PROJECT = File.expand_path('tmp/RubotoCore', File.dirname(__FILE__))
|
4
5
|
PLATFORM_DEBUG_APK = "#{PLATFORM_PROJECT}/bin/RubotoCore-debug.apk"
|
5
6
|
PLATFORM_RELEASE_APK = "#{PLATFORM_PROJECT}/bin/RubotoCore-release.apk"
|
6
7
|
MANIFEST_FILE = "AndroidManifest.xml"
|
8
|
+
GEM_FILE = "ruboto-core-#{Ruboto::VERSION}.gem"
|
9
|
+
GEM_SPEC_FILE = 'ruboto-core.gemspec'
|
7
10
|
|
8
11
|
# FIXME(uwe): Remove when we stop supporting JRuby 1.5.6
|
9
12
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.8.0')
|
@@ -20,12 +23,18 @@ ON_JRUBY_JARS_1_5_6 = JRUBY_JARS_VERSION == Gem::Version.new('1.5.6')
|
|
20
23
|
task :default => :gem
|
21
24
|
|
22
25
|
desc "Generate a gem"
|
23
|
-
task :gem
|
24
|
-
|
26
|
+
task :gem => GEM_FILE
|
27
|
+
|
28
|
+
file GEM_FILE => GEM_SPEC_FILE do
|
29
|
+
puts "Generating #{GEM_FILE}"
|
30
|
+
`gem build #{GEM_SPEC_FILE}`
|
25
31
|
end
|
26
32
|
|
27
33
|
desc "Push the gem to RubyGems"
|
28
|
-
task :release do
|
34
|
+
task :release => :gem do
|
35
|
+
output = `git status --porcelain`
|
36
|
+
raise "Workspace not clean!\n#{output}" unless output.empty?
|
37
|
+
sh "git tag #{Ruboto::VERSION}"
|
29
38
|
sh "gem push #{Dir['ruboto-core-*.gem'][-1]}"
|
30
39
|
end
|
31
40
|
|
@@ -50,12 +59,13 @@ namespace :platform do
|
|
50
59
|
sh "ruby -rubygems -I#{File.expand_path('lib', File.dirname(__FILE__))} bin/ruboto gen app --package org.ruboto.core --name RubotoCore --with-jruby #{'--with-psych' unless ON_JRUBY_JARS_1_5_6} --path #{PLATFORM_PROJECT}"
|
51
60
|
Dir.chdir(PLATFORM_PROJECT) do
|
52
61
|
manifest = REXML::Document.new(File.read(MANIFEST_FILE))
|
53
|
-
manifest.root.attributes['android:versionCode'] = '
|
54
|
-
manifest.root.attributes['android:versionName'] = '0.4.
|
62
|
+
manifest.root.attributes['android:versionCode'] = '405'
|
63
|
+
manifest.root.attributes['android:versionName'] = '0.4.5'
|
55
64
|
manifest.root.attributes['android:installLocation'] = 'auto' # or 'preferExternal' ?
|
56
65
|
manifest.root.elements['uses-sdk'].attributes['android:targetSdkVersion'] = '8'
|
57
66
|
File.open(MANIFEST_FILE, 'w') { |f| manifest.document.write(f, 4) }
|
58
67
|
File.open('default.properties', 'w'){|f| f << "target=android-8\n"}
|
68
|
+
File.open('Gemfile.apk', 'w'){|f| f << "source :rubygems\n\ngem 'activerecord-jdbc-adapter'\n"}
|
59
69
|
keystore_file = File.expand_path('~/android_market.keystore')
|
60
70
|
if File.exists?(keystore_file)
|
61
71
|
File.open('local.properties', 'a'){|f| f << "key.store=#{keystore_file}\nkey.alias=android_market\n"}
|
data/assets/Rakefile
CHANGED
@@ -9,6 +9,7 @@ def app_files_path() @app_files_path ||= "/data/data/#{package}/files" end
|
|
9
9
|
require 'rake/clean'
|
10
10
|
require 'rexml/document'
|
11
11
|
|
12
|
+
PROJECT_DIR = Dir.getwd
|
12
13
|
UPDATE_MARKER_FILE = File.expand_path(File.join('tmp', 'LAST_UPDATE'), File.dirname(__FILE__))
|
13
14
|
BUNDLE_JAR = File.expand_path 'libs/bundle.jar'
|
14
15
|
BUNDLE_PATH = File.expand_path 'tmp/bundle'
|
@@ -16,12 +17,14 @@ MANIFEST_FILE = File.expand_path 'AndroidManifest.xml'
|
|
16
17
|
RUBOTO_CONFIG_FILE = File.expand_path 'ruboto.yml'
|
17
18
|
GEM_FILE = File.expand_path('Gemfile.apk')
|
18
19
|
GEM_LOCK_FILE = File.expand_path('Gemfile.apk.lock')
|
20
|
+
RELEASE_APK_FILE = File.expand_path "bin/#{build_project_name}-release.apk"
|
19
21
|
APK_FILE = File.expand_path "bin/#{build_project_name}-debug.apk"
|
20
22
|
TEST_APK_FILE = File.expand_path "test/bin/#{build_project_name}Test-debug.apk"
|
21
23
|
JRUBY_JARS = Dir[File.expand_path 'libs/jruby-*.jar']
|
22
24
|
RESOURCE_FILES = Dir[File.expand_path 'res/**/*']
|
23
25
|
JAVA_SOURCE_FILES = Dir[File.expand_path 'src/**/*.java']
|
24
26
|
RUBY_SOURCE_FILES = Dir[File.expand_path 'src/**/*.rb']
|
27
|
+
APK_DEPENDENCIES = [MANIFEST_FILE, RUBOTO_CONFIG_FILE, BUNDLE_JAR] + JRUBY_JARS + JAVA_SOURCE_FILES + RESOURCE_FILES + RUBY_SOURCE_FILES
|
25
28
|
|
26
29
|
CLEAN.include('tmp', 'bin')
|
27
30
|
|
@@ -50,7 +53,7 @@ task :debug => APK_FILE
|
|
50
53
|
namespace :debug do
|
51
54
|
desc 'build debug package if compiled files have changed'
|
52
55
|
task :quick => [MANIFEST_FILE, RUBOTO_CONFIG_FILE, BUNDLE_JAR] + JRUBY_JARS + JAVA_SOURCE_FILES + RESOURCE_FILES do |t|
|
53
|
-
build_apk(t)
|
56
|
+
build_apk(t, false)
|
54
57
|
end
|
55
58
|
end
|
56
59
|
|
@@ -69,8 +72,10 @@ namespace :install do
|
|
69
72
|
end
|
70
73
|
end
|
71
74
|
|
72
|
-
task :release
|
73
|
-
|
75
|
+
task :release => RELEASE_APK_FILE
|
76
|
+
|
77
|
+
file RELEASE_APK_FILE => APK_DEPENDENCIES do |t|
|
78
|
+
build_apk(t, true)
|
74
79
|
end
|
75
80
|
|
76
81
|
task :tag => :release do
|
@@ -102,11 +107,11 @@ task :emulator do
|
|
102
107
|
end
|
103
108
|
|
104
109
|
task :start do
|
105
|
-
|
110
|
+
start_app
|
106
111
|
end
|
107
112
|
|
108
113
|
task :stop do
|
109
|
-
|
114
|
+
raise "Unable to stop app. Only available on emulator." unless stop_app
|
110
115
|
end
|
111
116
|
|
112
117
|
desc 'Restart the application'
|
@@ -119,31 +124,26 @@ end
|
|
119
124
|
file MANIFEST_FILE
|
120
125
|
file RUBOTO_CONFIG_FILE
|
121
126
|
|
122
|
-
file APK_FILE =>
|
123
|
-
build_apk(t)
|
127
|
+
file APK_FILE => APK_DEPENDENCIES do |t|
|
128
|
+
build_apk(t, false)
|
124
129
|
end
|
125
130
|
|
126
131
|
desc 'Copy scripts to emulator or device'
|
127
132
|
task :update_scripts => ['install:quick'] do
|
128
|
-
|
129
|
-
puts "Pushing files to apk public file area."
|
130
|
-
last_update = File.exists?(UPDATE_MARKER_FILE) ? Time.parse(File.read(UPDATE_MARKER_FILE)) : Time.parse('1970-01-01T00:00:00')
|
131
|
-
# TODO(uwe): Use `adb sync src` instead?
|
132
|
-
Dir.chdir('src') do
|
133
|
-
Dir["**/*.rb"].each do |script_file|
|
134
|
-
next if File.directory? script_file
|
135
|
-
next if File.mtime(script_file) < last_update
|
136
|
-
next if script_file =~ /~$/
|
137
|
-
print "#{script_file}: "; $stdout.flush
|
138
|
-
`adb push #{script_file} #{scripts_path}/#{script_file}`
|
139
|
-
end
|
140
|
-
end
|
141
|
-
mark_update
|
133
|
+
update_scripts
|
142
134
|
end
|
143
135
|
|
144
136
|
namespace :update_scripts do
|
145
137
|
desc 'Copy scripts to emulator and restart the app'
|
146
|
-
task :restart =>
|
138
|
+
task :restart => APK_DEPENDENCIES do |t|
|
139
|
+
if stop_app
|
140
|
+
update_scripts
|
141
|
+
else
|
142
|
+
build_apk(t, false)
|
143
|
+
install_apk
|
144
|
+
end
|
145
|
+
start_app
|
146
|
+
end
|
147
147
|
end
|
148
148
|
|
149
149
|
task :test => :uninstall do
|
@@ -168,51 +168,49 @@ file GEM_FILE
|
|
168
168
|
file GEM_LOCK_FILE
|
169
169
|
|
170
170
|
desc 'Generate bundle jar from Gemfile'
|
171
|
+
task :bundle => BUNDLE_JAR
|
172
|
+
|
171
173
|
file BUNDLE_JAR => [GEM_FILE, GEM_LOCK_FILE] do
|
172
174
|
next unless File.exists? GEM_FILE
|
173
175
|
puts "Generating #{BUNDLE_JAR}"
|
174
176
|
|
175
177
|
FileUtils.mkdir_p BUNDLE_PATH
|
176
178
|
sh "bundle install --gemfile #{GEM_FILE} --path=#{BUNDLE_PATH}"
|
179
|
+
gem_path = Dir["#{BUNDLE_PATH}/*ruby/1.8/gems"][0]
|
177
180
|
|
178
|
-
|
181
|
+
if package != 'org.ruboto.core' && JRUBY_JARS.none? { |f| File.exists? f }
|
182
|
+
Dir.chdir gem_path do
|
183
|
+
Dir['activerecord-jdbc-adapter-*'].each do |g|
|
184
|
+
puts "Removing #{g} gem since it is included in the RubotoCore platform apk."
|
185
|
+
FileUtils.rm_rf g
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
179
189
|
|
180
|
-
|
190
|
+
# Remove duplicate files
|
191
|
+
Dir.chdir gem_path do
|
181
192
|
scanned_files = []
|
193
|
+
source_files = RUBY_SOURCE_FILES.map{|f| f.gsub("#{PROJECT_DIR}/src/", '')}
|
182
194
|
Dir["*/lib/**/*"].each do |f|
|
195
|
+
next if File.directory? f
|
183
196
|
raise "Malformed file name" unless f =~ %r{^(.*?)/lib/(.*)$}
|
184
197
|
gem_name, lib_file = $1, $2
|
185
|
-
if
|
186
|
-
puts "Removing duplicate
|
198
|
+
if scanned_files.find{|sf| sf =~ %r{(.*?)/lib/#{lib_file}}}
|
199
|
+
puts "Removing duplicate file #{lib_file} in gem #{gem_name}"
|
187
200
|
puts "Already present in gem #{$1}"
|
201
|
+
FileUtils.rm f
|
202
|
+
elsif source_files.include? lib_file
|
203
|
+
puts "Removing duplicate file #{lib_file} in gem #{gem_name}"
|
204
|
+
puts "Already present in project source src/#{lib_file}"
|
205
|
+
FileUtils.rm f
|
206
|
+
else
|
207
|
+
scanned_files << f
|
188
208
|
end
|
189
209
|
end
|
190
210
|
end
|
191
211
|
|
192
|
-
# FIXME(uwe): Remove when directory listing in apk subdirectories work.
|
193
|
-
# FIXME(uwe): http://jira.codehaus.org/browse/JRUBY-5775
|
194
|
-
Dir["#{BUNDLE_PATH}/ruby/1.8/gems/activesupport-*/lib/active_support/core_ext.rb"].each do |faulty_file|
|
195
|
-
faulty_code = <<-'EOF'
|
196
|
-
Dir["#{File.dirname(__FILE__)}/core_ext/*.rb"].sort.each do |path|
|
197
|
-
require "active_support/core_ext/#{File.basename(path, '.rb')}"
|
198
|
-
end
|
199
|
-
EOF
|
200
|
-
replace_faulty_code(faulty_file, faulty_code)
|
201
|
-
end
|
202
|
-
|
203
|
-
Dir["#{BUNDLE_PATH}/ruby/1.8/gems/activemodel-*/lib/active_model/validations.rb"].each do |faulty_file|
|
204
|
-
faulty_code = <<-EOF
|
205
|
-
Dir[File.dirname(__FILE__) + "/validations/*.rb"].sort.each do |path|
|
206
|
-
filename = File.basename(path)
|
207
|
-
require "active_model/validations/\#{filename}"
|
208
|
-
end
|
209
|
-
EOF
|
210
|
-
replace_faulty_code(faulty_file, faulty_code)
|
211
|
-
end
|
212
|
-
# FIXME end
|
213
|
-
|
214
212
|
# Expand JARs
|
215
|
-
Dir.chdir
|
213
|
+
Dir.chdir gem_path do
|
216
214
|
Dir['*'].each do |gem_lib|
|
217
215
|
Dir.chdir "#{gem_lib}/lib" do
|
218
216
|
Dir['**/*.jar'].each do |jar|
|
@@ -239,12 +237,10 @@ Java::arjdbc.jdbc.AdapterJavaService.new.basicLoad(JRuby.runtime)
|
|
239
237
|
|
240
238
|
|
241
239
|
FileUtils.rm_f BUNDLE_JAR
|
242
|
-
Dir["#{
|
240
|
+
Dir["#{gem_path}/*"].each_with_index do |gem_dir, i|
|
243
241
|
`jar #{i == 0 ? 'c' : 'u'}f #{BUNDLE_JAR} -C #{gem_dir}/lib .`
|
244
242
|
end
|
245
243
|
FileUtils.rm_rf BUNDLE_PATH
|
246
|
-
|
247
|
-
Rake::Task['install'].invoke
|
248
244
|
end
|
249
245
|
|
250
246
|
# Methods
|
@@ -314,7 +310,7 @@ def replace_faulty_code(faulty_file, faulty_code)
|
|
314
310
|
end
|
315
311
|
end
|
316
312
|
|
317
|
-
def build_apk(t)
|
313
|
+
def build_apk(t, release)
|
318
314
|
if File.exist?(APK_FILE)
|
319
315
|
changed_prereqs = t.prerequisites.select do |p|
|
320
316
|
File.file?(p) && !Dir[p].empty? && Dir[p].map{|f| File.mtime(f)}.max > File.mtime(APK_FILE)
|
@@ -323,7 +319,11 @@ def build_apk(t)
|
|
323
319
|
changed_prereqs.each{|f| puts "#{f} changed."}
|
324
320
|
puts "Forcing rebuild of #{APK_FILE}."
|
325
321
|
end
|
326
|
-
|
322
|
+
if release
|
323
|
+
sh 'ant release'
|
324
|
+
else
|
325
|
+
sh 'ant debug'
|
326
|
+
end
|
327
327
|
end
|
328
328
|
|
329
329
|
def install_apk
|
@@ -347,3 +347,29 @@ def uninstall_apk
|
|
347
347
|
exit $?
|
348
348
|
end
|
349
349
|
end
|
350
|
+
|
351
|
+
def update_scripts
|
352
|
+
`adb shell mkdir -p #{scripts_path}` if !device_path_exists?(scripts_path)
|
353
|
+
puts "Pushing files to apk public file area."
|
354
|
+
last_update = File.exists?(UPDATE_MARKER_FILE) ? Time.parse(File.read(UPDATE_MARKER_FILE)) : Time.parse('1970-01-01T00:00:00')
|
355
|
+
# TODO(uwe): Use `adb sync src` instead?
|
356
|
+
Dir.chdir('src') do
|
357
|
+
Dir["**/*.rb"].each do |script_file|
|
358
|
+
next if File.directory? script_file
|
359
|
+
next if File.mtime(script_file) < last_update
|
360
|
+
next if script_file =~ /~$/
|
361
|
+
print "#{script_file}: "; $stdout.flush
|
362
|
+
`adb push #{script_file} #{scripts_path}/#{script_file}`
|
363
|
+
end
|
364
|
+
end
|
365
|
+
mark_update
|
366
|
+
end
|
367
|
+
|
368
|
+
def start_app
|
369
|
+
`adb shell am start -a android.intent.action.MAIN -n #{package}/.#{main_activity}`
|
370
|
+
end
|
371
|
+
|
372
|
+
def stop_app
|
373
|
+
output = `adb shell ps | grep #{package} | awk '{print $2}' | xargs adb shell kill`
|
374
|
+
return output !~ /Operation not permitted/
|
375
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
package THE_PACKAGE;
|
2
2
|
|
3
|
+
import java.io.File;
|
3
4
|
import java.io.IOException;
|
4
5
|
|
5
6
|
import org.ruboto.Script;
|
@@ -138,6 +139,9 @@ public class InheritingActivity extends org.ruboto.RubotoActivity {
|
|
138
139
|
}).start();
|
139
140
|
}
|
140
141
|
|
142
|
+
private static final String RUBOTO_APK = "RubotoCore-release.apk";
|
143
|
+
private static final String RUBOTO_URL = "https://github.com/downloads/ruboto/ruboto-core/" + RUBOTO_APK;
|
144
|
+
|
141
145
|
// Called when buton is pressed.
|
142
146
|
public void getRubotoCore(View view) {
|
143
147
|
try {
|
@@ -145,7 +149,9 @@ public class InheritingActivity extends org.ruboto.RubotoActivity {
|
|
145
149
|
} catch (android.content.ActivityNotFoundException anfe) {
|
146
150
|
try {
|
147
151
|
TextView textView = (TextView) findViewById(Class.forName(getPackageName() + ".R$id").getField("text").getInt(null));
|
148
|
-
|
152
|
+
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(RUBOTO_URL));
|
153
|
+
intent.setDataAndType(Uri.fromFile(new File(getCacheDir(), RUBOTO_APK)), "application/vnd.android.package-archive");
|
154
|
+
startActivity(intent);
|
149
155
|
} catch (Exception e) {}
|
150
156
|
}
|
151
157
|
}
|
data/lib/ruboto/commands/base.rb
CHANGED
@@ -325,7 +325,7 @@ module Ruboto
|
|
325
325
|
argument("what") {
|
326
326
|
required
|
327
327
|
validate {|i| %w(jruby app ruboto).include?(i)}
|
328
|
-
description "What do you want to update: '
|
328
|
+
description "What do you want to update: 'app', 'jruby', or 'ruboto'"
|
329
329
|
}
|
330
330
|
|
331
331
|
option("force") {
|
@@ -339,8 +339,6 @@ module Ruboto
|
|
339
339
|
|
340
340
|
def run
|
341
341
|
case params['what'].value
|
342
|
-
when "jruby" then
|
343
|
-
update_jruby(params['force'].value, params['with-psych'].value) || abort
|
344
342
|
when "app" then
|
345
343
|
force = params['force'].value
|
346
344
|
update_test force
|
@@ -352,6 +350,9 @@ module Ruboto
|
|
352
350
|
update_build_xml
|
353
351
|
update_manifest nil, nil, force
|
354
352
|
update_core_classes "exclude"
|
353
|
+
update_bundle
|
354
|
+
when "jruby" then
|
355
|
+
update_jruby(params['force'].value, params['with-psych'].value) || abort
|
355
356
|
when "ruboto" then
|
356
357
|
update_ruboto(params['force'].value) || abort
|
357
358
|
end
|
data/lib/ruboto/util/update.rb
CHANGED
@@ -139,7 +139,7 @@ EOF
|
|
139
139
|
# FIXME(uwe): Remove when we stop supporting upgrades from ruboto-core 0.3.3 and older
|
140
140
|
old_scripts_dir = 'assets/scripts'
|
141
141
|
if File.exists? old_scripts_dir
|
142
|
-
FileUtils.mv Dir["#{old_scripts_dir}
|
142
|
+
FileUtils.mv Dir["#{old_scripts_dir}/*"], SCRIPTS_DIR
|
143
143
|
FileUtils.rm_rf old_scripts_dir
|
144
144
|
end
|
145
145
|
# FIXME end
|
@@ -377,6 +377,13 @@ EOF
|
|
377
377
|
File.open('build.xml', 'w'){|f| f << ant_script}
|
378
378
|
end
|
379
379
|
|
380
|
+
def update_bundle
|
381
|
+
if File.exist?('Gemfile.apk') && File.exists?('libs/bundle.jar')
|
382
|
+
FileUtils.rm 'libs/bundle.jar'
|
383
|
+
system 'rake bundle'
|
384
|
+
end
|
385
|
+
end
|
386
|
+
|
380
387
|
end
|
381
388
|
end
|
382
389
|
end
|
data/lib/ruboto/version.rb
CHANGED
@@ -14,7 +14,6 @@ test('stack depth') do |activity|
|
|
14
14
|
os_offset = {13 => 1}[android.os.Build::VERSION::SDK_INT].to_i
|
15
15
|
jruby_offset = {
|
16
16
|
'1.5.6' => [-2, -5, -6, -8],
|
17
|
-
'1.7.0.dev' => [ 0, 2, 5, 5],
|
18
17
|
}[org.jruby.runtime.Constants::VERSION] || [0,0,0,0]
|
19
18
|
version_message ="ANDROID: #{android.os.Build::VERSION::SDK_INT}, JRuby: #{org.jruby.runtime.Constants::VERSION}"
|
20
19
|
assert_equal 44 + os_offset + jruby_offset[0], activity.find_view_by_id(42).text.to_i, version_message
|
data/test/app_test_methods.rb
CHANGED
@@ -11,6 +11,7 @@ module AppTestMethods
|
|
11
11
|
end
|
12
12
|
|
13
13
|
assert_code 'ReadSourceFile', "File.read(__FILE__)"
|
14
|
+
assert_code 'DirListsFilesInApk', 'Dir["#{File.dirname(__FILE__)}/*"].each{|f| raise "File #{f.inspect} not found" unless File.exists?(f)}'
|
14
15
|
|
15
16
|
Dir[File.expand_path('activity/*_test.rb', File.dirname(__FILE__))].each do |test_src|
|
16
17
|
snake_name = test_src.chomp('_test.rb')
|
metadata
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruboto-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 15424085
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
|
9
|
+
- 1
|
10
|
+
- rc
|
11
|
+
- 4
|
12
|
+
version: 0.4.1.rc.4
|
11
13
|
platform: ruby
|
12
14
|
authors:
|
13
15
|
- Daniel Jackoway
|
@@ -18,7 +20,7 @@ autorequire:
|
|
18
20
|
bindir: bin
|
19
21
|
cert_chain: []
|
20
22
|
|
21
|
-
date: 2011-
|
23
|
+
date: 2011-10-08 00:00:00 Z
|
22
24
|
dependencies:
|
23
25
|
- !ruby/object:Gem::Dependency
|
24
26
|
name: main
|
@@ -138,12 +140,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
138
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
141
|
none: false
|
140
142
|
requirements:
|
141
|
-
- - "
|
143
|
+
- - ">"
|
142
144
|
- !ruby/object:Gem::Version
|
143
|
-
hash:
|
145
|
+
hash: 25
|
144
146
|
segments:
|
145
|
-
-
|
146
|
-
|
147
|
+
- 1
|
148
|
+
- 3
|
149
|
+
- 1
|
150
|
+
version: 1.3.1
|
147
151
|
requirements: []
|
148
152
|
|
149
153
|
rubyforge_project: ruboto-core
|