roart 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -1
- data/Rakefile +1 -1
- data/lib/roart.rb +1 -1
- data/lib/roart/connection.rb +0 -1
- data/lib/roart/connection_adapter.rb +1 -1
- data/lib/roart/connection_adapters/mechanize_adapter.rb +4 -2
- data/lib/roart/validations.rb +35 -25
- data/roart.gemspec +6 -6
- data/spec/roart/connection_adapter_spec.rb +1 -1
- data/spec/roart/connection_spec.rb +1 -1
- data/spec/roart/validation_spec.rb +152 -0
- metadata +30 -14
data/History.txt
CHANGED
@@ -1,5 +1,12 @@
|
|
1
|
-
==0.1.
|
1
|
+
==0.1.8 / 2010-03-16
|
2
|
+
Added validate presence of.
|
3
|
+
Updated specs to test validations.
|
4
|
+
No Longer depend on mechanize version 0.9.3 and get rid of those pesky deprecation warnings.
|
5
|
+
The connection adapter classes are now suffixed with "Adapter", so Mechanize is now MechanizeAdapter. You still specify it with :adapter => 'mechanize', however.
|
6
|
+
|
7
|
+
==0.1.7 / 2010-03-11
|
2
8
|
Added some new error classes, add removed any extraneous raise 'text' (via jrbingham)
|
9
|
+
Removed debugging puts from the ticket file.
|
3
10
|
|
4
11
|
==0.1.6 / 2010-03-09
|
5
12
|
Updated the search feature to pull all the ticket information at the same time, instead of only loading the id and subject.
|
data/Rakefile
CHANGED
@@ -28,7 +28,7 @@ PROJ.rubyforge.name = 'roart'
|
|
28
28
|
PROJ.exclude = %w(.git pkg coverage)
|
29
29
|
PROJ.description = "Interface for working with Request Tracker (RT) tickets inspired by ActiveRecord."
|
30
30
|
PROJ.rdoc.main = 'README.rdoc'
|
31
|
-
depend_on 'mechanize'
|
31
|
+
depend_on 'mechanize' #this will go away when a stdlib adapter gets written
|
32
32
|
|
33
33
|
PROJ.spec.opts << '--color'
|
34
34
|
|
data/lib/roart.rb
CHANGED
data/lib/roart/connection.rb
CHANGED
@@ -6,7 +6,7 @@ module Roart
|
|
6
6
|
extend Forwardable
|
7
7
|
|
8
8
|
def initialize(config)
|
9
|
-
@adapter = Roart::ConnectionAdapters.const_get(config[:adapter].capitalize).new(config)
|
9
|
+
@adapter = Roart::ConnectionAdapters.const_get(config[:adapter].capitalize + "Adapter").new(config)
|
10
10
|
@adapter.login(config) if config[:user] && config[:pass]
|
11
11
|
end
|
12
12
|
|
@@ -1,6 +1,8 @@
|
|
1
|
+
require 'mechanize'
|
2
|
+
|
1
3
|
module Roart
|
2
4
|
module ConnectionAdapters
|
3
|
-
class
|
5
|
+
class MechanizeAdapter
|
4
6
|
|
5
7
|
def initialize(config)
|
6
8
|
@conf = config
|
@@ -8,7 +10,7 @@ module Roart
|
|
8
10
|
|
9
11
|
def login(config)
|
10
12
|
@conf.merge!(config)
|
11
|
-
agent =
|
13
|
+
agent = Mechanize.new
|
12
14
|
page = agent.get(@conf[:server])
|
13
15
|
form = page.form('login')
|
14
16
|
form.user = @conf[:user]
|
data/lib/roart/validations.rb
CHANGED
@@ -70,6 +70,7 @@ module Roart
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def validate(obj)
|
73
|
+
obj.errors.clear
|
73
74
|
@validators.each{|validator| validator.call(obj)}
|
74
75
|
end
|
75
76
|
|
@@ -80,14 +81,21 @@ module Roart
|
|
80
81
|
ALL_RANGE_OPTIONS = [ :is, :within, :in, :minimum, :min, :maximum, :max ].freeze
|
81
82
|
ALL_NUMERICALITY_CHECKS = { :greater_than => '>', :greater_than_or_equal_to => '>=',
|
82
83
|
:equal_to => '==', :less_than => '<', :less_than_or_equal_to => '<=',
|
83
|
-
:odd => 'odd?', :even => 'even?' }.freeze
|
84
|
+
:odd => 'odd?', :even => 'even?', :only_integer => 'is_a?' }.freeze
|
84
85
|
|
85
86
|
def validator
|
86
87
|
@validator ||= Validators.new
|
87
88
|
end
|
88
89
|
|
89
90
|
def validates_presence_of(*args)
|
90
|
-
|
91
|
+
args.each do |field|
|
92
|
+
validator_proc = lambda do |obj|
|
93
|
+
if obj.send(field.to_sym).nil? || obj.send(field.to_sym).blank?
|
94
|
+
obj.errors.add(field.to_sym, "Can't Be Blank")
|
95
|
+
end
|
96
|
+
end
|
97
|
+
self.validator.add(validator_proc)
|
98
|
+
end
|
91
99
|
end
|
92
100
|
|
93
101
|
def validates_format_of(*args)
|
@@ -165,35 +173,37 @@ module Roart
|
|
165
173
|
|
166
174
|
def validates_numericality_of(*args)
|
167
175
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
168
|
-
numericality_options = ALL_NUMERICALITY_CHECKS & options.keys
|
169
|
-
|
170
|
-
case numericality_options
|
171
|
-
when 0
|
172
|
-
raise ArgumentError, "Options Unspecified. Specify an option to use."
|
173
|
-
when 1
|
174
|
-
#continue
|
175
|
-
else
|
176
|
-
raise ArgumentError, "Too many options specified"
|
177
|
-
end
|
178
|
-
|
179
|
-
option = numericality_options.first
|
180
|
-
option_value = options[numericality_options.first]
|
181
|
-
key = {:is => :wrong_length, :minimum => :too_short, :maximum => :too_long}[option]
|
182
|
-
custom_message = options[:message] || options[key]
|
183
|
-
|
176
|
+
numericality_options = ALL_NUMERICALITY_CHECKS.keys & options.keys
|
184
177
|
args.each do |field|
|
185
178
|
numericality_options.each do |option|
|
186
|
-
case option
|
187
|
-
|
188
|
-
|
189
|
-
|
179
|
+
validator_proc = case option
|
180
|
+
when :only_integer
|
181
|
+
lambda do |obj|
|
182
|
+
unless obj.send(field.to_sym).send(ALL_NUMERICALITY_CHECKS[option], Integer )
|
183
|
+
obj.errors.add(field.to_sym, "Must be #{ALL_NUMERICALITY_CHECKS[option]}.")
|
184
|
+
end
|
185
|
+
end
|
186
|
+
when :even, :odd
|
187
|
+
lambda do |obj|
|
188
|
+
if obj.send(field.to_sym).send("is_a?".to_sym, Integer) == true
|
189
|
+
unless obj.send(field.to_sym).send(ALL_NUMERICALITY_CHECKS[option] )
|
190
|
+
obj.errors.add(field.to_sym, "Must be #{ALL_NUMERICALITY_CHECKS[option]}.")
|
191
|
+
end
|
192
|
+
else
|
193
|
+
obj.errors.add(field.to_sym, "Must be an #{option} Integer.")
|
190
194
|
end
|
191
|
-
|
192
|
-
|
195
|
+
end
|
196
|
+
else
|
197
|
+
raise ArgumentError, ":#{option} must be a number" unless options[option].is_a?(Numeric)
|
198
|
+
lambda do |obj|
|
199
|
+
unless obj.send(field.to_sym).send(ALL_NUMERICALITY_CHECKS[option], options[option] )
|
200
|
+
obj.errors.add(field.to_sym, "Must be #{ALL_NUMERICALITY_CHECKS[option]}.")
|
201
|
+
end
|
202
|
+
end
|
193
203
|
end
|
204
|
+
self.validator.add(validator_proc)
|
194
205
|
end
|
195
206
|
end
|
196
|
-
|
197
207
|
end
|
198
208
|
|
199
209
|
end
|
data/roart.gemspec
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{roart}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.8"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["PJ Davis"]
|
9
|
-
s.date = %q{2010-03-
|
9
|
+
s.date = %q{2010-03-17}
|
10
10
|
s.description = %q{Interface for working with Request Tracker (RT) tickets inspired by ActiveRecord.}
|
11
11
|
s.email = %q{pj.davis@gmail.com}
|
12
12
|
s.extra_rdoc_files = ["History.txt", "README.rdoc", "spec/test_data/full_history.txt", "spec/test_data/search_ticket.txt", "spec/test_data/single_history.txt", "spec/test_data/ticket.txt"]
|
13
|
-
s.files = ["History.txt", "README.rdoc", "Rakefile", "lib/roart.rb", "lib/roart/callbacks.rb", "lib/roart/connection.rb", "lib/roart/connection_adapter.rb", "lib/roart/connection_adapters/mechanize_adapter.rb", "lib/roart/core/array.rb", "lib/roart/core/hash.rb", "lib/roart/core/hash/indifferent_access.rb", "lib/roart/core/string.rb", "lib/roart/errors.rb", "lib/roart/history.rb", "lib/roart/roart.rb", "lib/roart/ticket.rb", "lib/roart/ticket_page.rb", "lib/roart/validations.rb", "roart.gemspec", "spec/roart/callbacks_spec.rb", "spec/roart/connection_adapter_spec.rb", "spec/roart/connection_spec.rb", "spec/roart/core/array_spec.rb", "spec/roart/core/hash_spec.rb", "spec/roart/core/string_spec.rb", "spec/roart/history_spec.rb", "spec/roart/roart_spec.rb", "spec/roart/ticket_page_spec.rb", "spec/roart/ticket_spec.rb", "spec/roart_spec.rb", "spec/spec_helper.rb", "spec/test_data/full_history.txt", "spec/test_data/search_ticket.txt", "spec/test_data/single_history.txt", "spec/test_data/ticket.txt"]
|
13
|
+
s.files = ["History.txt", "README.rdoc", "Rakefile", "lib/roart.rb", "lib/roart/callbacks.rb", "lib/roart/connection.rb", "lib/roart/connection_adapter.rb", "lib/roart/connection_adapters/mechanize_adapter.rb", "lib/roart/core/array.rb", "lib/roart/core/hash.rb", "lib/roart/core/hash/indifferent_access.rb", "lib/roart/core/string.rb", "lib/roart/errors.rb", "lib/roart/history.rb", "lib/roart/roart.rb", "lib/roart/ticket.rb", "lib/roart/ticket_page.rb", "lib/roart/validations.rb", "roart.gemspec", "spec/roart/callbacks_spec.rb", "spec/roart/connection_adapter_spec.rb", "spec/roart/connection_spec.rb", "spec/roart/core/array_spec.rb", "spec/roart/core/hash_spec.rb", "spec/roart/core/string_spec.rb", "spec/roart/history_spec.rb", "spec/roart/roart_spec.rb", "spec/roart/ticket_page_spec.rb", "spec/roart/ticket_spec.rb", "spec/roart/validation_spec.rb", "spec/roart_spec.rb", "spec/spec_helper.rb", "spec/test_data/full_history.txt", "spec/test_data/search_ticket.txt", "spec/test_data/single_history.txt", "spec/test_data/ticket.txt"]
|
14
14
|
s.homepage = %q{http://github.com/pjdavis/roart}
|
15
15
|
s.rdoc_options = ["--main", "README.rdoc"]
|
16
16
|
s.require_paths = ["lib"]
|
@@ -23,14 +23,14 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.specification_version = 3
|
24
24
|
|
25
25
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
26
|
-
s.add_runtime_dependency(%q<mechanize>, [">= 0.
|
26
|
+
s.add_runtime_dependency(%q<mechanize>, [">= 1.0.0"])
|
27
27
|
s.add_development_dependency(%q<bones>, [">= 2.5.1"])
|
28
28
|
else
|
29
|
-
s.add_dependency(%q<mechanize>, [">= 0.
|
29
|
+
s.add_dependency(%q<mechanize>, [">= 1.0.0"])
|
30
30
|
s.add_dependency(%q<bones>, [">= 2.5.1"])
|
31
31
|
end
|
32
32
|
else
|
33
|
-
s.add_dependency(%q<mechanize>, [">= 0.
|
33
|
+
s.add_dependency(%q<mechanize>, [">= 1.0.0"])
|
34
34
|
s.add_dependency(%q<bones>, [">= 2.5.1"])
|
35
35
|
end
|
36
36
|
end
|
@@ -4,7 +4,7 @@ require File.join(File.dirname(__FILE__), %w[ .. spec_helper])
|
|
4
4
|
describe "ConnectionAdapter" do
|
5
5
|
|
6
6
|
it 'should give us back a connection' do
|
7
|
-
Roart::ConnectionAdapters::
|
7
|
+
Roart::ConnectionAdapters::MechanizeAdapter.should_receive(:new).with(:adapter => 'mechanize').and_return(mock('mechanize'))
|
8
8
|
Roart::ConnectionAdapter.new(:adapter => 'mechanize')
|
9
9
|
end
|
10
10
|
|
@@ -40,7 +40,7 @@ describe "Connection" do
|
|
40
40
|
it 'should give us back the whole thing' do
|
41
41
|
mock_mech = mock('mech')
|
42
42
|
@options = {:server => 'server', :user => 'user', :pass => 'pass', :adapter => 'mechanize'}
|
43
|
-
Roart::ConnectionAdapters::
|
43
|
+
Roart::ConnectionAdapters::MechanizeAdapter.should_receive(:new).with(@options).and_return(mock_mech)
|
44
44
|
mock_mech.should_receive(:login).with(@options)
|
45
45
|
mock_mech.should_receive(:get).with('uri').and_return('body')
|
46
46
|
connection = Roart::Connection.new(@options)
|
@@ -0,0 +1,152 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "validations" do
|
4
|
+
|
5
|
+
describe "field length" do
|
6
|
+
|
7
|
+
it "show validate too short" do
|
8
|
+
class ShortTicket < Roart::Ticket; validates_length_of(:subject, :min => 6); end
|
9
|
+
ticket = inst_ticket(ShortTicket)
|
10
|
+
ticket.subject = "short"
|
11
|
+
ticket.valid?.should be_false
|
12
|
+
ticket.subject = "longer subject"
|
13
|
+
ticket.valid?.should be_true
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should validate too long" do
|
17
|
+
class LongTicket < Roart::Ticket; validates_length_of(:subject, :max => 6); end
|
18
|
+
ticket = inst_ticket(LongTicket)
|
19
|
+
ticket.subject = "too long"
|
20
|
+
ticket.valid?.should be_false
|
21
|
+
ticket.subject = "short"
|
22
|
+
ticket.valid?.should be_true
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should validate exact" do
|
26
|
+
class ExactTicket < Roart::Ticket; validates_length_of(:subject, :is => 5); end
|
27
|
+
ticket = inst_ticket(ExactTicket)
|
28
|
+
ticket.subject = "Not Five"
|
29
|
+
ticket.valid?.should be_false
|
30
|
+
ticket.subject = "Yes 5"
|
31
|
+
ticket.valid?.should be_true
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should validate range" do
|
35
|
+
class RangeTicket < Roart::Ticket; validates_length_of(:subject, :within => 7..12); end
|
36
|
+
ticket = inst_ticket(RangeTicket)
|
37
|
+
ticket.subject = 'short'
|
38
|
+
ticket.valid?.should be_false
|
39
|
+
ticket.subject = 'waaaaay toooooo long'
|
40
|
+
ticket.valid?.should be_false
|
41
|
+
ticket.subject = 'just right'
|
42
|
+
ticket.valid?.should be_true
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "format" do
|
48
|
+
|
49
|
+
it "should validate format" do
|
50
|
+
class FormatTicket < Roart::Ticket; validates_format_of(:subject, :format => /^lol$/); end
|
51
|
+
ticket = inst_ticket(FormatTicket)
|
52
|
+
ticket.subject = 'poop'
|
53
|
+
ticket.valid?.should be_false
|
54
|
+
ticket.subject = 'lol'
|
55
|
+
ticket.valid?.should be_true
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "presence" do
|
61
|
+
|
62
|
+
it "should validate presence of" do
|
63
|
+
class PresenceTicket < Roart::Ticket; validates_presence_of(:subject); end
|
64
|
+
ticket = inst_ticket(PresenceTicket)
|
65
|
+
ticket.subject = ""
|
66
|
+
ticket.valid?.should be_false
|
67
|
+
ticket.subject = "I'M HERE!"
|
68
|
+
ticket.valid?.should be_true
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should validate presence of" do
|
72
|
+
class PresenceTicket < Roart::Ticket; validates_presence_of(:subject); end
|
73
|
+
ticket = inst_ticket(PresenceTicket)
|
74
|
+
ticket.subject = nil
|
75
|
+
ticket.valid?.should be_false
|
76
|
+
ticket.subject = "I'M HERE!"
|
77
|
+
ticket.valid?.should be_true
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "numericality" do
|
83
|
+
|
84
|
+
it "should validate greater than" do
|
85
|
+
class GTTicket < Roart::Ticket; validates_numericality_of(:subject, :greater_than => 5); end
|
86
|
+
ticket = inst_ticket(GTTicket)
|
87
|
+
ticket.subject = 4
|
88
|
+
ticket.valid?.should be_false
|
89
|
+
ticket.subject = 6
|
90
|
+
ticket.valid?.should be_true
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should validate less than" do
|
94
|
+
class LTTicket < Roart::Ticket; validates_numericality_of(:subject, :less_than => 5); end
|
95
|
+
ticket = inst_ticket(LTTicket)
|
96
|
+
ticket.subject = 6
|
97
|
+
ticket.valid?.should be_false
|
98
|
+
ticket.subject = 4
|
99
|
+
ticket.valid?.should be_true
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should validate integer" do
|
103
|
+
class IntTicket < Roart::Ticket; validates_numericality_of(:subject, :only_integer => true); end
|
104
|
+
ticket = inst_ticket(IntTicket)
|
105
|
+
ticket.subject = 6.3
|
106
|
+
ticket.valid?.should be_false
|
107
|
+
ticket.subject = 4
|
108
|
+
ticket.valid?.should be_true
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should validate integer" do
|
112
|
+
class EqualTicket < Roart::Ticket; validates_numericality_of(:subject, :equal_to => 4); end
|
113
|
+
ticket = inst_ticket(EqualTicket)
|
114
|
+
ticket.subject = 6.3
|
115
|
+
ticket.valid?.should be_false
|
116
|
+
ticket.subject = 4
|
117
|
+
ticket.valid?.should be_true
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should validate even" do
|
121
|
+
class EvenTicket < Roart::Ticket; validates_numericality_of(:subject, :even => true); end
|
122
|
+
ticket = inst_ticket(EvenTicket)
|
123
|
+
ticket.subject = 6.3
|
124
|
+
ticket.valid?.should be_false
|
125
|
+
ticket.subject = 5
|
126
|
+
ticket.valid?.should be_false
|
127
|
+
ticket.subject = 4
|
128
|
+
ticket.valid?.should be_true
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should validate two at once" do
|
132
|
+
class DoubleTeam < Roart::Ticket; validates_numericality_of(:subject, :even => true, :greater_than => 5); end
|
133
|
+
ticket = inst_ticket(DoubleTeam)
|
134
|
+
ticket.subject = 6.3
|
135
|
+
ticket.valid?.should be_false
|
136
|
+
ticket.subject = 9
|
137
|
+
ticket.valid?.should be_false
|
138
|
+
ticket.subject = 4
|
139
|
+
ticket.valid?.should be_false
|
140
|
+
ticket.subject = 8
|
141
|
+
ticket.valid?.should be_true
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
#helpers
|
149
|
+
|
150
|
+
def inst_ticket(klass)
|
151
|
+
klass.send(:instantiate,{:subject => 'A New Ticket', :queue => 'My Queue', :id => 1})
|
152
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roart
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 8
|
9
|
+
version: 0.1.8
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- PJ Davis
|
@@ -9,29 +14,37 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-17 00:00:00 -05:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: mechanize
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 0
|
30
|
+
- 0
|
31
|
+
version: 1.0.0
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: bones
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
38
|
requirements:
|
31
39
|
- - ">="
|
32
40
|
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 2
|
43
|
+
- 5
|
44
|
+
- 1
|
33
45
|
version: 2.5.1
|
34
|
-
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
35
48
|
description: Interface for working with Request Tracker (RT) tickets inspired by ActiveRecord.
|
36
49
|
email: pj.davis@gmail.com
|
37
50
|
executables: []
|
@@ -75,6 +88,7 @@ files:
|
|
75
88
|
- spec/roart/roart_spec.rb
|
76
89
|
- spec/roart/ticket_page_spec.rb
|
77
90
|
- spec/roart/ticket_spec.rb
|
91
|
+
- spec/roart/validation_spec.rb
|
78
92
|
- spec/roart_spec.rb
|
79
93
|
- spec/spec_helper.rb
|
80
94
|
- spec/test_data/full_history.txt
|
@@ -95,18 +109,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
95
109
|
requirements:
|
96
110
|
- - ">="
|
97
111
|
- !ruby/object:Gem::Version
|
112
|
+
segments:
|
113
|
+
- 0
|
98
114
|
version: "0"
|
99
|
-
version:
|
100
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
116
|
requirements:
|
102
117
|
- - ">="
|
103
118
|
- !ruby/object:Gem::Version
|
119
|
+
segments:
|
120
|
+
- 0
|
104
121
|
version: "0"
|
105
|
-
version:
|
106
122
|
requirements: []
|
107
123
|
|
108
124
|
rubyforge_project: roart
|
109
|
-
rubygems_version: 1.3.
|
125
|
+
rubygems_version: 1.3.6
|
110
126
|
signing_key:
|
111
127
|
specification_version: 3
|
112
128
|
summary: Interface for working with Request Tracker (RT) tickets inspired by ActiveRecord
|