ruboto-core 0.4.0 → 0.4.1.rc.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|