hoptoad-api 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.textile CHANGED
@@ -1,6 +1,7 @@
1
1
  h1. Hoptoad API
2
2
 
3
3
  An unofficial Ruby library for interacting with the "Hoptoad API":http://hoptoadapp.com/pages/api
4
+ "Hoptoad-2 API":http://help.hoptoadapp.com/faqs/api-2/api-overview
4
5
 
5
6
  h2. Usage
6
7
 
@@ -14,7 +15,7 @@ Hoptoad::Error.find(12345)
14
15
 
15
16
  # or get a list of errors using:
16
17
  Hoptoad::Error.find(:all)
17
- Hoptoad::Error.find(:all, :params => { :page => 2 })
18
+ Hoptoad::Error.find(:all, { :page => 2 })
18
19
  </code>
19
20
  </pre>
20
21
 
@@ -27,4 +28,3 @@ h2. Requirements
27
28
  h2. Acknowledgements
28
29
 
29
30
  * "Hoptoad":http://hoptoadapp.com
30
- * "Lighthouse-api":http://github.com/Caged/lighthouse-api (inspiration for much of this code)
data/Rakefile CHANGED
@@ -1,18 +1,62 @@
1
+ require 'rubygems'
1
2
  require 'rake'
2
3
 
4
+ $LOAD_PATH.unshift 'lib'
5
+
3
6
  begin
4
7
  require 'jeweler'
5
- Jeweler::Tasks.new do |s|
6
- s.name = "hoptoad-api"
7
- s.summary = %Q{An unofficial gem for interacting with the Hoptoad API}
8
- s.email = "steve.agalloco@gmail.com"
9
- s.homepage = "http://github.com/spagalloco/hoptoad-api"
10
- s.description = "An unofficial gem for interacting with the Hoptoad API"
11
- s.authors = ["Steve Agalloco"]
12
- s.add_dependency(%q<activesupport>, [">= 2.1.0"])
13
- s.add_dependency(%q<activeresource>, [">= 2.1.0"])
8
+ require 'hoptoad-api/version'
9
+
10
+ Jeweler::Tasks.new do |gem|
11
+ gem.name = "hoptoad-api"
12
+ gem.summary = %Q{An unofficial gem for interacting with the Hoptoad API}
13
+ gem.email = "steve.agalloco@gmail.com"
14
+ gem.homepage = "http://github.com/spagalloco/hoptoad-api"
15
+ gem.description = "An unofficial gem for interacting with the Hoptoad API"
16
+ gem.authors = ["Steve Agalloco"]
17
+ gem.version = Hoptoad::VERSION
18
+
19
+ gem.add_dependency(%q<httparty>, [">= 0.5.2"])
20
+ gem.add_dependency(%q<hashie>, [">= 0.2.0"])
21
+
22
+ gem.add_development_dependency "shoulda", ">= 0"
23
+ gem.add_development_dependency "fakeweb", ">= 0"
14
24
  end
15
25
  Jeweler::GemcutterTasks.new
16
26
  rescue LoadError
17
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
18
- end
27
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
28
+ end
29
+
30
+ require 'rake/testtask'
31
+ Rake::TestTask.new(:test) do |test|
32
+ test.libs << 'lib' << 'test'
33
+ test.pattern = 'test/**/test_*.rb'
34
+ test.verbose = true
35
+ end
36
+
37
+ begin
38
+ require 'rcov/rcovtask'
39
+ Rcov::RcovTask.new do |test|
40
+ test.libs << 'test'
41
+ test.pattern = 'test/**/test_*.rb'
42
+ test.verbose = true
43
+ end
44
+ rescue LoadError
45
+ task :rcov do
46
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
47
+ end
48
+ end
49
+
50
+ task :test => :check_dependencies
51
+
52
+ task :default => :test
53
+
54
+ require 'rake/rdoctask'
55
+ Rake::RDocTask.new do |rdoc|
56
+ version = Hoptoad::VERSION
57
+
58
+ rdoc.rdoc_dir = 'rdoc'
59
+ rdoc.title = "hoptoad-api #{version}"
60
+ rdoc.rdoc_files.include('README*')
61
+ rdoc.rdoc_files.include('lib/**/*.rb')
62
+ end
data/hoptoad-api.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{hoptoad-api}
8
- s.version = "1.0.0"
8
+ s.version = "2.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Steve Agalloco"]
12
- s.date = %q{2010-04-24}
12
+ s.date = %q{2010-04-23}
13
13
  s.description = %q{An unofficial gem for interacting with the Hoptoad API}
14
14
  s.email = %q{steve.agalloco@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -19,10 +19,16 @@ Gem::Specification.new do |s|
19
19
  ".gitignore",
20
20
  "README.textile",
21
21
  "Rakefile",
22
- "VERSION.yml",
23
22
  "hoptoad-api.gemspec",
24
23
  "lib/hoptoad-api.rb",
25
- "test/hoptoad-api.rb"
24
+ "lib/hoptoad-api/client.rb",
25
+ "lib/hoptoad-api/core_extensions.rb",
26
+ "lib/hoptoad-api/version.rb",
27
+ "test/fixtures/errors.xml",
28
+ "test/fixtures/individual_error.xml",
29
+ "test/fixtures/paginated_errors.xml",
30
+ "test/test_helper.rb",
31
+ "test/test_hoptoad-api.rb"
26
32
  ]
27
33
  s.homepage = %q{http://github.com/spagalloco/hoptoad-api}
28
34
  s.rdoc_options = ["--charset=UTF-8"]
@@ -30,7 +36,8 @@ Gem::Specification.new do |s|
30
36
  s.rubygems_version = %q{1.3.5}
31
37
  s.summary = %q{An unofficial gem for interacting with the Hoptoad API}
32
38
  s.test_files = [
33
- "test/hoptoad-api.rb"
39
+ "test/test_helper.rb",
40
+ "test/test_hoptoad-api.rb"
34
41
  ]
35
42
 
36
43
  if s.respond_to? :specification_version then
@@ -38,15 +45,21 @@ Gem::Specification.new do |s|
38
45
  s.specification_version = 3
39
46
 
40
47
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
41
- s.add_runtime_dependency(%q<activesupport>, [">= 2.1.0"])
42
- s.add_runtime_dependency(%q<activeresource>, [">= 2.1.0"])
48
+ s.add_runtime_dependency(%q<httparty>, [">= 0.5.2"])
49
+ s.add_runtime_dependency(%q<hashie>, [">= 0.2.0"])
50
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
51
+ s.add_development_dependency(%q<fakeweb>, [">= 0"])
43
52
  else
44
- s.add_dependency(%q<activesupport>, [">= 2.1.0"])
45
- s.add_dependency(%q<activeresource>, [">= 2.1.0"])
53
+ s.add_dependency(%q<httparty>, [">= 0.5.2"])
54
+ s.add_dependency(%q<hashie>, [">= 0.2.0"])
55
+ s.add_dependency(%q<shoulda>, [">= 0"])
56
+ s.add_dependency(%q<fakeweb>, [">= 0"])
46
57
  end
47
58
  else
48
- s.add_dependency(%q<activesupport>, [">= 2.1.0"])
49
- s.add_dependency(%q<activeresource>, [">= 2.1.0"])
59
+ s.add_dependency(%q<httparty>, [">= 0.5.2"])
60
+ s.add_dependency(%q<hashie>, [">= 0.2.0"])
61
+ s.add_dependency(%q<shoulda>, [">= 0"])
62
+ s.add_dependency(%q<fakeweb>, [">= 0"])
50
63
  end
51
64
  end
52
65
 
data/lib/hoptoad-api.rb CHANGED
@@ -1,122 +1,28 @@
1
- require 'rubygems'
1
+ require 'hashie'
2
+ require 'httparty'
2
3
 
3
- begin
4
- require 'uri'
5
- require 'addressable/uri'
6
-
7
- module URI
8
- def decode(*args)
9
- Addressable::URI.decode(*args)
10
- end
11
-
12
- def escape(*args)
13
- Addressable::URI.escape(*args)
14
- end
15
-
16
- def parse(*args)
17
- Addressable::URI.parse(*args)
18
- end
19
- end
20
- rescue LoadError
21
- puts "Install the Addressable gem to support accounts with subdomains."
22
- puts "# sudo gem install addressable"
23
- puts
24
- end
25
-
26
- require 'activesupport'
27
- require 'activeresource'
28
-
29
- # Ruby lib for working with the Hoptoad API's XML interface.
30
- # The first thing you need to set is the account name. This is the same
31
- # as the web address for your account.
32
- #
33
- # Hoptoad.account = 'myaccount'
34
- #
35
- # Then, you should set the authentication token.
36
- #
37
- # Hoptoad.token = 'abcdefg'
38
- #
39
- # If no token or authentication info is given, a HoptoadError exception will be raised.
40
- #
41
- # For more details, check out the hoptoad docs at http://hoptoadapp.com/pages/api.
42
- #
43
4
  module Hoptoad
5
+ extend self
6
+
44
7
  class HoptoadError < StandardError; end
45
- class << self
46
- attr_accessor :host_format, :domain_format, :protocol, :port
47
- attr_reader :account, :token
48
-
49
- # Sets the account name, and updates all the resources with the new domain.
50
- def account=(name)
51
- resources.each do |klass|
52
- klass.site = klass.site_format % (host_format % [protocol, domain_format % name, ":#{port}"])
53
- end
54
- @account = name
55
- end
56
-
57
- # Sets the API token for all the resources.
58
- def token=(value)
59
- @token = value
60
- end
61
-
62
- def resources
63
- @resources ||= []
64
- end
8
+
9
+ def account=(account)
10
+ @account = account
65
11
  end
66
-
67
- self.host_format = '%s://%s%s'
68
- self.domain_format = '%s.hoptoadapp.com'
69
- self.protocol = 'http'
70
- self.port = ''
71
-
72
- class Base < ActiveResource::Base
73
- def self.inherited(base)
74
- Hoptoad.resources << base
75
- class << base
76
- attr_accessor :site_format
77
-
78
- def append_auth_token_to_params(*arguments)
79
- opts = arguments.last.is_a?(Hash) ? arguments.pop : {}
80
- opts = opts.has_key?(:params) ? opts : opts.merge(:params => {})
81
- opts[:params] = opts[:params].merge(:auth_token => Hoptoad.token)
82
- arguments << opts
83
- arguments
84
- end
85
- end
86
- base.site_format = '%s'
87
- super
88
- end
12
+
13
+ def account
14
+ "http://#{@account}.hoptoadapp.com"
89
15
  end
90
-
91
- # Find errors
92
- #
93
- # Errors are paginated. You get 25 at a time.
94
- # Hoptoad::Error.find(:all)
95
- # Hoptoad::Error.find(:all, :params => { :page => 2 })
96
- #
97
- # find individual error by ID
98
- # Hoptoad::Error.find(44)
99
- #
100
- class Error < Base
101
-
102
- # find using token
103
- def self.find(*arguments)
104
- raise HoptoadError.new('API Token cannot be nil') if Hoptoad.token.blank?
105
- raise HoptoadError.new('Account cannot be nil') if Hoptoad.account.blank?
106
-
107
- arguments = append_auth_token_to_params(*arguments)
108
- super(*arguments)
109
- end
110
-
111
- # produces the url on hoptoad's site
112
- def url
113
- path = Error.site.to_s
114
- path << collection_path.gsub!(/^\//,'')
115
- path.gsub!('.xml','')
116
- path << '/'
117
- path << self.id.to_s
118
- end
119
-
16
+
17
+ def auth_token=(token)
18
+ @auth_token = token
19
+ end
20
+
21
+ def auth_token
22
+ @auth_token
120
23
  end
121
-
122
24
  end
25
+
26
+ require 'hoptoad-api/version'
27
+ require 'hoptoad-api/core_extensions'
28
+ require 'hoptoad-api/client'
@@ -0,0 +1,95 @@
1
+ # Ruby lib for working with the Hoptoad API's XML interface.
2
+ # The first thing you need to set is the account name. This is the same
3
+ # as the web address for your account.
4
+ #
5
+ # Hoptoad.account = 'myaccount'
6
+ #
7
+ # Then, you should set the authentication token.
8
+ #
9
+ # Hoptoad.token = 'abcdefg'
10
+ #
11
+ # If no token or authentication info is given, a HoptoadError exception will be raised.
12
+ #
13
+ # For more details, check out the hoptoad docs at http://hoptoadapp.com/pages/api.
14
+ #
15
+ # Find errors
16
+ #
17
+ # Errors are paginated. You get 25 at a time.
18
+ # errors = Hoptoad::Error.find(:all)
19
+ #
20
+ # with pagination:
21
+ # Hoptoad::Error.find(:all, :params => { :page => 2 })
22
+ #
23
+ # find individual error by ID
24
+ # Hoptoad::Error.find(44)
25
+
26
+ module Hoptoad
27
+ class Error
28
+ include HTTParty
29
+ format :xml
30
+
31
+ # cattr_accessor :collection_path, :individual_collection_path
32
+
33
+ @@collection_path = '/errors.xml'
34
+ @@individual_collection_path = '/errors/'
35
+
36
+ # def initialize
37
+ # self.class.base_uri "http://#{account}.hoptoadapp.com"
38
+ # self.class.default_params :auth_token => token
39
+ #
40
+ #
41
+ # end
42
+
43
+ def self.collection_path
44
+ @@collection_path
45
+ end
46
+
47
+ def self.find(*args)
48
+ base_uri Hoptoad.account
49
+ default_params :auth_token => Hoptoad.auth_token
50
+
51
+ check_configuration
52
+
53
+ results = case args.first
54
+ when Fixnum
55
+ find_individual(args)
56
+ when :all
57
+ find_all(args)
58
+ else
59
+ raise HoptoadError.new('Invalid argument')
60
+ end
61
+
62
+ # puts results.inspect
63
+
64
+ raise HoptoadError.new('No results found.') if results.nil?
65
+ raise HoptoadError.new(results.errors.error) if results.errors
66
+
67
+ results.group || results.groups
68
+ end
69
+
70
+ def self.update(error, options)
71
+ check_configuration
72
+
73
+ self.class.put("#{@collection_path}", options)
74
+ end
75
+
76
+ private
77
+
78
+ def self.check_configuration
79
+ raise HoptoadError.new('API Token cannot be nil') if default_options.nil? || default_options[:default_params].nil? || !default_options[:default_params].has_key?(:auth_token)
80
+ raise HoptoadError.new('Account cannot be nil') unless default_options.has_key?(:base_uri)
81
+ end
82
+
83
+ def self.find_all(args)
84
+ options = args.extract_options!
85
+ Hashie::Mash.new(get("#{@@collection_path}", { :query => options }))
86
+ end
87
+
88
+ def self.find_individual(args)
89
+ id = args.shift
90
+ options = args.extract_options!
91
+ Hashie::Mash.new(get("#{@@individual_collection_path}#{id}.xml", { :query => options }))
92
+ end
93
+
94
+ end
95
+ end
@@ -0,0 +1,21 @@
1
+ class Array
2
+ def extract_options!
3
+ last.is_a?(::Hash) ? pop : {}
4
+ end
5
+ end
6
+
7
+ class Hash
8
+
9
+ # Converts all of the keys to strings, optionally formatting key name
10
+ def rubyify_keys!
11
+ keys.each{|k|
12
+ v = delete(k)
13
+ new_key = k.to_s.underscore
14
+ self[new_key] = v
15
+ v.rubyify_keys! if v.is_a?(Hash)
16
+ v.each{|p| p.rubyify_keys! if p.is_a?(Hash)} if v.is_a?(Array)
17
+ }
18
+ self
19
+ end
20
+
21
+ end
@@ -0,0 +1,3 @@
1
+ module Hoptoad
2
+ VERSION = '2.0.0'
3
+ end
@@ -0,0 +1,545 @@
1
+ HTTP/1.1 200 OK
2
+
3
+ <?xml version="1.0" encoding="UTF-8"?>
4
+ <groups type="array">
5
+ <group>
6
+ <action>index</action>
7
+ <controller>shades</controller>
8
+ <created-at type="datetime">2010-04-16T21:45:30Z</created-at>
9
+ <error-class>ActiveRecord::StatementInvalid</error-class>
10
+ <error-message>ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'otype' in 'order clause': SELECT shades.id, shades.member_id, shades.equity_id, shades.etype, shades.shade_type, shade_features.shade_id, shade_features.price_in_cents, shade_features.tra</error-message>
11
+ <file>/data/myapp/releases/20100416200739/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb</file>
12
+ <id type="integer">1696170</id>
13
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
14
+ <line-number type="integer">219</line-number>
15
+ <most-recent-notice-at type="datetime">2010-04-24T02:27:11Z</most-recent-notice-at>
16
+ <notice-hash>71ce436b9c091d468daf479eeee4b216</notice-hash>
17
+ <notices-count type="integer">455</notices-count>
18
+ <project-id type="integer">248</project-id>
19
+ <rails-env>production</rails-env>
20
+ <resolved type="boolean">false</resolved>
21
+ <updated-at type="datetime">2010-04-24T02:27:11Z</updated-at>
22
+ </group>
23
+ <group>
24
+ <action>index</action>
25
+ <controller>member_ballots</controller>
26
+ <created-at type="datetime">2010-04-16T20:19:25Z</created-at>
27
+ <error-class>ActiveRecord::StatementInvalid</error-class>
28
+ <error-message>ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'group_count' in 'order clause': SELECT `members`.* FROM `members` right join member_ballots on member_ballots.member_id = members.id WHERE (member_ballots.posting_id = 4703) ORDER BY `group_cou</error-message>
29
+ <file>/data/myapp/releases/20100416200739/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb</file>
30
+ <id type="integer">1695879</id>
31
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
32
+ <line-number type="integer">219</line-number>
33
+ <most-recent-notice-at type="datetime">2010-04-24T02:25:41Z</most-recent-notice-at>
34
+ <notice-hash>8e80ee8d42a6922f28d936eb25b1203e</notice-hash>
35
+ <notices-count type="integer">895</notices-count>
36
+ <project-id type="integer">248</project-id>
37
+ <rails-env>production</rails-env>
38
+ <resolved type="boolean">false</resolved>
39
+ <updated-at type="datetime">2010-04-24T02:25:41Z</updated-at>
40
+ </group>
41
+ <group>
42
+ <action>index</action>
43
+ <controller>shade_notes</controller>
44
+ <created-at type="datetime">2010-04-17T02:21:58Z</created-at>
45
+ <error-class>NoMethodError</error-class>
46
+ <error-message>NoMethodError: undefined method `timezone_adjusted_shaded_at' for nil:NilClass</error-message>
47
+ <file>/data/myapp/releases/20100416200739/app/helpers/application_helper.rb</file>
48
+ <id type="integer">1696798</id>
49
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
50
+ <line-number type="integer">48</line-number>
51
+ <most-recent-notice-at type="datetime">2010-04-24T02:20:32Z</most-recent-notice-at>
52
+ <notice-hash>5802da99c915c425c22799e68a208144</notice-hash>
53
+ <notices-count type="integer">36</notices-count>
54
+ <project-id type="integer">248</project-id>
55
+ <rails-env>production</rails-env>
56
+ <resolved type="boolean">false</resolved>
57
+ <updated-at type="datetime">2010-04-24T02:20:32Z</updated-at>
58
+ </group>
59
+ <group>
60
+ <action>show</action>
61
+ <controller>company</controller>
62
+ <created-at type="datetime">2010-04-16T21:54:58Z</created-at>
63
+ <error-class>NoMethodError</error-class>
64
+ <error-message>NoMethodError: undefined method `name' for nil:NilClass</error-message>
65
+ <file>/data/myapp/releases/20100416200739/app/views/company/show.html.erb</file>
66
+ <id type="integer">1696205</id>
67
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
68
+ <line-number type="integer">23</line-number>
69
+ <most-recent-notice-at type="datetime">2010-04-24T00:07:15Z</most-recent-notice-at>
70
+ <notice-hash>7544a3924645e8dab5c1a2c1151bc5b2</notice-hash>
71
+ <notices-count type="integer">188</notices-count>
72
+ <project-id type="integer">248</project-id>
73
+ <rails-env>production</rails-env>
74
+ <resolved type="boolean">false</resolved>
75
+ <updated-at type="datetime">2010-04-24T00:04:57Z</updated-at>
76
+ </group>
77
+ <group>
78
+ <action>show</action>
79
+ <controller>company</controller>
80
+ <created-at type="datetime">2010-04-17T02:33:36Z</created-at>
81
+ <error-class>NoMethodError</error-class>
82
+ <error-message>NoMethodError: undefined method `name' for nil:NilClass</error-message>
83
+ <file>/data/myapp/releases/20100416200739/app/views/company/show.html.erb</file>
84
+ <id type="integer">1696825</id>
85
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
86
+ <line-number type="integer">46</line-number>
87
+ <most-recent-notice-at type="datetime">2010-04-24T00:05:35Z</most-recent-notice-at>
88
+ <notice-hash>c03c3f98fbfdb69fb35ec297b49d11ad</notice-hash>
89
+ <notices-count type="integer">34</notices-count>
90
+ <project-id type="integer">248</project-id>
91
+ <rails-env>production</rails-env>
92
+ <resolved type="boolean">false</resolved>
93
+ <updated-at type="datetime">2010-04-24T00:05:35Z</updated-at>
94
+ </group>
95
+ <group>
96
+ <action>create</action>
97
+ <controller>shade_notes</controller>
98
+ <created-at type="datetime">2010-04-22T19:22:22Z</created-at>
99
+ <error-class>ArgumentError</error-class>
100
+ <error-message>ArgumentError: Invalid currency amount</error-message>
101
+ <file>/data/myapp/releases/20100416200739/vendor/gems/money-2.1.5/lib/money/core_extensions.rb</file>
102
+ <id type="integer">1723207</id>
103
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
104
+ <line-number type="integer">116</line-number>
105
+ <most-recent-notice-at type="datetime">2010-04-23T23:13:26Z</most-recent-notice-at>
106
+ <notice-hash>e8590fb8e52d9030727f96b83727141a</notice-hash>
107
+ <notices-count type="integer">2</notices-count>
108
+ <project-id type="integer">248</project-id>
109
+ <rails-env>production</rails-env>
110
+ <resolved type="boolean">false</resolved>
111
+ <updated-at type="datetime">2010-04-23T23:13:26Z</updated-at>
112
+ </group>
113
+ <group>
114
+ <action>index</action>
115
+ <controller>topics</controller>
116
+ <created-at type="datetime">2010-04-17T18:35:21Z</created-at>
117
+ <error-class>NoMethodError</error-class>
118
+ <error-message>NoMethodError: undefined method `name' for false:FalseClass</error-message>
119
+ <file>/data/myapp/releases/20100416200739/app/controllers/topics_controller.rb</file>
120
+ <id type="integer">1698293</id>
121
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
122
+ <line-number type="integer">20</line-number>
123
+ <most-recent-notice-at type="datetime">2010-04-23T22:40:43Z</most-recent-notice-at>
124
+ <notice-hash>8f12dc095d158b4ed87576587a20fc2a</notice-hash>
125
+ <notices-count type="integer">11</notices-count>
126
+ <project-id type="integer">248</project-id>
127
+ <rails-env>production</rails-env>
128
+ <resolved type="boolean">false</resolved>
129
+ <updated-at type="datetime">2010-04-23T22:40:43Z</updated-at>
130
+ </group>
131
+ <group>
132
+ <action>display_name</action>
133
+ <controller>settings</controller>
134
+ <created-at type="datetime">2010-04-23T19:02:51Z</created-at>
135
+ <error-class>AASM::InvalidTransition</error-class>
136
+ <error-message>AASM::InvalidTransition: Event 'publish' cannot transition from 'published'</error-message>
137
+ <file>/data/myapp/releases/20100416200739/vendor/gems/gvaughn-aasm-2.0.4/lib/event.rb</file>
138
+ <id type="integer">1728364</id>
139
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
140
+ <line-number type="integer">17</line-number>
141
+ <most-recent-notice-at type="datetime">2010-04-23T19:03:14Z</most-recent-notice-at>
142
+ <notice-hash>a001037e72d28cb4fe0beca2c065f368</notice-hash>
143
+ <notices-count type="integer">2</notices-count>
144
+ <project-id type="integer">248</project-id>
145
+ <rails-env>production</rails-env>
146
+ <resolved type="boolean">false</resolved>
147
+ <updated-at type="datetime">2010-04-23T19:02:52Z</updated-at>
148
+ </group>
149
+ <group>
150
+ <action>index</action>
151
+ <controller>topics</controller>
152
+ <created-at type="datetime">2010-04-17T01:44:56Z</created-at>
153
+ <error-class>RuntimeError</error-class>
154
+ <error-message>RuntimeError: "NilClass"</error-message>
155
+ <file>/data/myapp/releases/20100416200739/app/helpers/tk_urls_helper.rb</file>
156
+ <id type="integer">1696722</id>
157
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
158
+ <line-number type="integer">74</line-number>
159
+ <most-recent-notice-at type="datetime">2010-04-23T18:00:25Z</most-recent-notice-at>
160
+ <notice-hash>8ef369d7bcdd984101e321c3b83a5696</notice-hash>
161
+ <notices-count type="integer">51</notices-count>
162
+ <project-id type="integer">248</project-id>
163
+ <rails-env>production</rails-env>
164
+ <resolved type="boolean">false</resolved>
165
+ <updated-at type="datetime">2010-04-23T18:00:25Z</updated-at>
166
+ </group>
167
+ <group>
168
+ <action>update</action>
169
+ <controller>admin/moderate</controller>
170
+ <created-at type="datetime">2010-04-19T14:46:26Z</created-at>
171
+ <error-class>ActiveRecord::StaleObjectError</error-class>
172
+ <error-message>ActiveRecord::StaleObjectError: Attempted to update a stale object</error-message>
173
+ <file>/data/myapp/releases/20100416200739/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb</file>
174
+ <id type="integer">1703705</id>
175
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
176
+ <line-number type="integer">89</line-number>
177
+ <most-recent-notice-at type="datetime">2010-04-23T17:57:22Z</most-recent-notice-at>
178
+ <notice-hash>05eea39bd5b059fe99b877ad87b99729</notice-hash>
179
+ <notices-count type="integer">5</notices-count>
180
+ <project-id type="integer">248</project-id>
181
+ <rails-env>production</rails-env>
182
+ <resolved type="boolean">false</resolved>
183
+ <updated-at type="datetime">2010-04-23T17:57:22Z</updated-at>
184
+ </group>
185
+ <group>
186
+ <action>index</action>
187
+ <controller>welcome</controller>
188
+ <created-at type="datetime">2010-04-16T20:49:36Z</created-at>
189
+ <error-class>ActionView::MissingTemplate</error-class>
190
+ <error-message>ActionView::MissingTemplate: Missing template welcome/_what_we_shade.erb in view path app/views</error-message>
191
+ <file>/data/myapp/releases/20100416200739/vendor/rails/actionpack/lib/action_view/paths.rb</file>
192
+ <id type="integer">1695982</id>
193
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
194
+ <line-number type="integer">66</line-number>
195
+ <most-recent-notice-at type="datetime">2010-04-23T17:44:24Z</most-recent-notice-at>
196
+ <notice-hash>b937b06951264480a538c1a0727066ae</notice-hash>
197
+ <notices-count type="integer">24</notices-count>
198
+ <project-id type="integer">248</project-id>
199
+ <rails-env>production</rails-env>
200
+ <resolved type="boolean">false</resolved>
201
+ <updated-at type="datetime">2010-04-23T17:44:24Z</updated-at>
202
+ </group>
203
+ <group>
204
+ <action>edit_follows</action>
205
+ <controller>dashboard</controller>
206
+ <created-at type="datetime">2010-04-20T16:26:41Z</created-at>
207
+ <error-class>NoMethodError</error-class>
208
+ <error-message>NoMethodError: undefined method `each' for nil:NilClass</error-message>
209
+ <file>/data/myapp/releases/20100416200739/app/controllers/dashboard_controller.rb</file>
210
+ <id type="integer">1711098</id>
211
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
212
+ <line-number type="integer">49</line-number>
213
+ <most-recent-notice-at type="datetime">2010-04-23T17:40:06Z</most-recent-notice-at>
214
+ <notice-hash>6d9f6fdd171263da486f92f34ad314ee</notice-hash>
215
+ <notices-count type="integer">7</notices-count>
216
+ <project-id type="integer">248</project-id>
217
+ <rails-env>production</rails-env>
218
+ <resolved type="boolean">false</resolved>
219
+ <updated-at type="datetime">2010-04-23T17:40:06Z</updated-at>
220
+ </group>
221
+ <group>
222
+ <action></action>
223
+ <controller></controller>
224
+ <created-at type="datetime">2010-04-19T23:17:54Z</created-at>
225
+ <error-class>ActionController::MethodNotAllowed</error-class>
226
+ <error-message>ActionController::MethodNotAllowed: Only get, put, and delete requests are allowed.</error-message>
227
+ <file>/data/myapp/releases/20100416200739/vendor/rails/actionpack/lib/action_controller/routing/recognition_optimisation.rb</file>
228
+ <id type="integer">1706890</id>
229
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
230
+ <line-number type="integer">64</line-number>
231
+ <most-recent-notice-at type="datetime">2010-04-23T15:51:53Z</most-recent-notice-at>
232
+ <notice-hash>697a16d98f9cd4dfc7e3390153f2534c</notice-hash>
233
+ <notices-count type="integer">5</notices-count>
234
+ <project-id type="integer">248</project-id>
235
+ <rails-env>production</rails-env>
236
+ <resolved type="boolean">false</resolved>
237
+ <updated-at type="datetime">2010-04-23T15:51:53Z</updated-at>
238
+ </group>
239
+ <group>
240
+ <action>show</action>
241
+ <controller>forums</controller>
242
+ <created-at type="datetime">2010-04-18T20:40:30Z</created-at>
243
+ <error-class>RuntimeError</error-class>
244
+ <error-message>RuntimeError: "NilClass"</error-message>
245
+ <file>/data/myapp/releases/20100416200739/app/helpers/tk_urls_helper.rb</file>
246
+ <id type="integer">1700827</id>
247
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
248
+ <line-number type="integer">74</line-number>
249
+ <most-recent-notice-at type="datetime">2010-04-23T13:25:09Z</most-recent-notice-at>
250
+ <notice-hash>8558b4ce7124c6f9a213ba361ed1a5d3</notice-hash>
251
+ <notices-count type="integer">12</notices-count>
252
+ <project-id type="integer">248</project-id>
253
+ <rails-env>production</rails-env>
254
+ <resolved type="boolean">false</resolved>
255
+ <updated-at type="datetime">2010-04-23T13:25:09Z</updated-at>
256
+ </group>
257
+ <group>
258
+ <action>shades_only</action>
259
+ <controller>trading_activity</controller>
260
+ <created-at type="datetime">2010-04-18T06:52:59Z</created-at>
261
+ <error-class>ActionView::MissingTemplate</error-class>
262
+ <error-message>ActionView::MissingTemplate: Missing template trading_activity/shades_only.erb in view path app/views</error-message>
263
+ <file>/data/myapp/releases/20100416200739/vendor/rails/actionpack/lib/action_view/paths.rb</file>
264
+ <id type="integer">1699397</id>
265
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
266
+ <line-number type="integer">66</line-number>
267
+ <most-recent-notice-at type="datetime">2010-04-23T13:03:08Z</most-recent-notice-at>
268
+ <notice-hash>7260ebbbb0102c25cf35e61c29ab433e</notice-hash>
269
+ <notices-count type="integer">25</notices-count>
270
+ <project-id type="integer">248</project-id>
271
+ <rails-env>production</rails-env>
272
+ <resolved type="boolean">false</resolved>
273
+ <updated-at type="datetime">2010-04-23T13:03:08Z</updated-at>
274
+ </group>
275
+ <group>
276
+ <action>choose_name</action>
277
+ <controller>registration</controller>
278
+ <created-at type="datetime">2010-04-19T02:04:23Z</created-at>
279
+ <error-class>AASM::InvalidTransition</error-class>
280
+ <error-message>AASM::InvalidTransition: Event 'publish' cannot transition from 'published'</error-message>
281
+ <file>/data/myapp/releases/20100416200739/vendor/gems/gvaughn-aasm-2.0.4/lib/event.rb</file>
282
+ <id type="integer">1701377</id>
283
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
284
+ <line-number type="integer">17</line-number>
285
+ <most-recent-notice-at type="datetime">2010-04-23T02:51:25Z</most-recent-notice-at>
286
+ <notice-hash>850b802e136b07e289d84fddd8d7fca9</notice-hash>
287
+ <notices-count type="integer">11</notices-count>
288
+ <project-id type="integer">248</project-id>
289
+ <rails-env>production</rails-env>
290
+ <resolved type="boolean">false</resolved>
291
+ <updated-at type="datetime">2010-04-23T02:51:19Z</updated-at>
292
+ </group>
293
+ <group>
294
+ <action>show</action>
295
+ <controller>blogs</controller>
296
+ <created-at type="datetime">2010-04-17T03:14:21Z</created-at>
297
+ <error-class>ArgumentError</error-class>
298
+ <error-message>ArgumentError: argument is an invalid Member object</error-message>
299
+ <file>/data/myapp/releases/20100416200739/app/models/comment.rb</file>
300
+ <id type="integer">1696899</id>
301
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
302
+ <line-number type="integer">68</line-number>
303
+ <most-recent-notice-at type="datetime">2010-04-22T20:32:57Z</most-recent-notice-at>
304
+ <notice-hash>c321d001a83fe2df9a0c38cce734bb4b</notice-hash>
305
+ <notices-count type="integer">32</notices-count>
306
+ <project-id type="integer">248</project-id>
307
+ <rails-env>production</rails-env>
308
+ <resolved type="boolean">false</resolved>
309
+ <updated-at type="datetime">2010-04-22T20:32:57Z</updated-at>
310
+ </group>
311
+ <group>
312
+ <action>index</action>
313
+ <controller>members</controller>
314
+ <created-at type="datetime">2010-04-22T13:45:59Z</created-at>
315
+ <error-class>NoMethodError</error-class>
316
+ <error-message>NoMethodError: undefined method `pluralize' for nil:NilClass</error-message>
317
+ <file>/data/myapp/releases/20100416200739/lib/standalone_link_renderer.rb</file>
318
+ <id type="integer">1721478</id>
319
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
320
+ <line-number type="integer">23</line-number>
321
+ <most-recent-notice-at type="datetime">2010-04-22T13:45:59Z</most-recent-notice-at>
322
+ <notice-hash>40dceaf757049b758327f81e8f9cef9e</notice-hash>
323
+ <notices-count type="integer">1</notices-count>
324
+ <project-id type="integer">248</project-id>
325
+ <rails-env>production</rails-env>
326
+ <resolved type="boolean">false</resolved>
327
+ <updated-at type="datetime">2010-04-22T13:45:59Z</updated-at>
328
+ </group>
329
+ <group>
330
+ <action>index</action>
331
+ <controller>members</controller>
332
+ <created-at type="datetime">2010-04-17T20:14:27Z</created-at>
333
+ <error-class>NoMethodError</error-class>
334
+ <error-message>NoMethodError: undefined method `field_specs' for nil:NilClass</error-message>
335
+ <file>/data/myapp/releases/20100416200739/lib/filter_helper.rb</file>
336
+ <id type="integer">1698489</id>
337
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
338
+ <line-number type="integer">116</line-number>
339
+ <most-recent-notice-at type="datetime">2010-04-22T11:30:02Z</most-recent-notice-at>
340
+ <notice-hash>dee5055845a1f738a9c86f3fd70bb19b</notice-hash>
341
+ <notices-count type="integer">2</notices-count>
342
+ <project-id type="integer">248</project-id>
343
+ <rails-env>production</rails-env>
344
+ <resolved type="boolean">false</resolved>
345
+ <updated-at type="datetime">2010-04-22T11:30:02Z</updated-at>
346
+ </group>
347
+ <group>
348
+ <action>followers</action>
349
+ <controller>subscriptions</controller>
350
+ <created-at type="datetime">2010-04-19T22:20:59Z</created-at>
351
+ <error-class>NameError</error-class>
352
+ <error-message>NameError: uninitialized constant SubscriptionsController</error-message>
353
+ <file>/data/myapp/releases/20100416200739/vendor/rails/activesupport/lib/active_support/dependencies.rb</file>
354
+ <id type="integer">1706545</id>
355
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
356
+ <line-number type="integer">443</line-number>
357
+ <most-recent-notice-at type="datetime">2010-04-22T08:28:09Z</most-recent-notice-at>
358
+ <notice-hash>32992aac8be6024e6f5783c12e7b6fac</notice-hash>
359
+ <notices-count type="integer">13</notices-count>
360
+ <project-id type="integer">248</project-id>
361
+ <rails-env>production</rails-env>
362
+ <resolved type="boolean">false</resolved>
363
+ <updated-at type="datetime">2010-04-22T08:28:09Z</updated-at>
364
+ </group>
365
+ <group>
366
+ <action>index</action>
367
+ <controller>topics</controller>
368
+ <created-at type="datetime">2010-04-17T02:59:11Z</created-at>
369
+ <error-class>NoMethodError</error-class>
370
+ <error-message>NoMethodError: undefined method `slug' for nil:NilClass</error-message>
371
+ <file>/data/myapp/releases/20100416200739/app/controllers/topics_controller.rb</file>
372
+ <id type="integer">1696865</id>
373
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
374
+ <line-number type="integer">46</line-number>
375
+ <most-recent-notice-at type="datetime">2010-04-22T05:37:29Z</most-recent-notice-at>
376
+ <notice-hash>06b34874dd1edf6b90e223702f26a6ec</notice-hash>
377
+ <notices-count type="integer">72</notices-count>
378
+ <project-id type="integer">248</project-id>
379
+ <rails-env>production</rails-env>
380
+ <resolved type="boolean">false</resolved>
381
+ <updated-at type="datetime">2010-04-22T05:25:05Z</updated-at>
382
+ </group>
383
+ <group>
384
+ <action>positions</action>
385
+ <controller>dashboard</controller>
386
+ <created-at type="datetime">2010-04-21T16:07:14Z</created-at>
387
+ <error-class>NoMethodError</error-class>
388
+ <error-message>NoMethodError: undefined method `headline' for nil:NilClass</error-message>
389
+ <file>/data/myapp/releases/20100416200739/app/views/dashboard/_positions_table.html.erb</file>
390
+ <id type="integer">1716777</id>
391
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
392
+ <line-number type="integer">3</line-number>
393
+ <most-recent-notice-at type="datetime">2010-04-21T16:07:14Z</most-recent-notice-at>
394
+ <notice-hash>e4f7d77be6a6cc86924bf66023a8c37f</notice-hash>
395
+ <notices-count type="integer">1</notices-count>
396
+ <project-id type="integer">248</project-id>
397
+ <rails-env>production</rails-env>
398
+ <resolved type="boolean">false</resolved>
399
+ <updated-at type="datetime">2010-04-21T16:07:14Z</updated-at>
400
+ </group>
401
+ <group>
402
+ <action>index</action>
403
+ <controller>forum_posts</controller>
404
+ <created-at type="datetime">2010-04-19T16:15:33Z</created-at>
405
+ <error-class>WillPaginate::InvalidPage</error-class>
406
+ <error-message>WillPaginate::InvalidPage: "http://www.laborpascoperu.org.pe/envio11.txt?" given as value, which translates to '0' as page number</error-message>
407
+ <file>/data/myapp/releases/20100416200739/vendor/gems/will_paginate-2.2.2/lib/will_paginate/collection.rb</file>
408
+ <id type="integer">1704224</id>
409
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
410
+ <line-number type="integer">51</line-number>
411
+ <most-recent-notice-at type="datetime">2010-04-21T15:04:26Z</most-recent-notice-at>
412
+ <notice-hash>bc870c86d74a7b43ee1ecffb154aad9c</notice-hash>
413
+ <notices-count type="integer">2</notices-count>
414
+ <project-id type="integer">248</project-id>
415
+ <rails-env>production</rails-env>
416
+ <resolved type="boolean">false</resolved>
417
+ <updated-at type="datetime">2010-04-21T15:04:26Z</updated-at>
418
+ </group>
419
+ <group>
420
+ <action>update</action>
421
+ <controller>admin/moderate</controller>
422
+ <created-at type="datetime">2010-04-17T01:59:37Z</created-at>
423
+ <error-class>AASM::InvalidTransition</error-class>
424
+ <error-message>AASM::InvalidTransition: Event 'approve' cannot transition from 'removed'</error-message>
425
+ <file>/data/myapp/releases/20100416200739/vendor/gems/gvaughn-aasm-2.0.4/lib/event.rb</file>
426
+ <id type="integer">1696758</id>
427
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
428
+ <line-number type="integer">17</line-number>
429
+ <most-recent-notice-at type="datetime">2010-04-21T01:45:26Z</most-recent-notice-at>
430
+ <notice-hash>1e17db05793e2bb697aabb926c39f0b3</notice-hash>
431
+ <notices-count type="integer">4</notices-count>
432
+ <project-id type="integer">248</project-id>
433
+ <rails-env>production</rails-env>
434
+ <resolved type="boolean">false</resolved>
435
+ <updated-at type="datetime">2010-04-21T01:45:26Z</updated-at>
436
+ </group>
437
+ <group>
438
+ <action>show</action>
439
+ <controller>tags</controller>
440
+ <created-at type="datetime">2010-04-20T08:14:34Z</created-at>
441
+ <error-class>NoMethodError</error-class>
442
+ <error-message>NoMethodError: undefined method `shaded_at' for nil:NilClass</error-message>
443
+ <file>/data/myapp/releases/20100416200739/app/views/shade_notes/_shade_note.html.erb</file>
444
+ <id type="integer">1708892</id>
445
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
446
+ <line-number type="integer">20</line-number>
447
+ <most-recent-notice-at type="datetime">2010-04-20T08:14:34Z</most-recent-notice-at>
448
+ <notice-hash>f404dcac7ce0e7c06c40cc9b7a07af3a</notice-hash>
449
+ <notices-count type="integer">1</notices-count>
450
+ <project-id type="integer">248</project-id>
451
+ <rails-env>production</rails-env>
452
+ <resolved type="boolean">false</resolved>
453
+ <updated-at type="datetime">2010-04-20T08:14:34Z</updated-at>
454
+ </group>
455
+ <group>
456
+ <action>index</action>
457
+ <controller>subscriptions</controller>
458
+ <created-at type="datetime">2010-04-19T20:56:46Z</created-at>
459
+ <error-class>NameError</error-class>
460
+ <error-message>NameError: uninitialized constant SubscriptionsController</error-message>
461
+ <file>/data/myapp/releases/20100416200739/vendor/rails/activesupport/lib/active_support/dependencies.rb</file>
462
+ <id type="integer">1705954</id>
463
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
464
+ <line-number type="integer">443</line-number>
465
+ <most-recent-notice-at type="datetime">2010-04-19T23:31:54Z</most-recent-notice-at>
466
+ <notice-hash>b6a802f25d9de887fd7ec24e735494fe</notice-hash>
467
+ <notices-count type="integer">9</notices-count>
468
+ <project-id type="integer">248</project-id>
469
+ <rails-env>production</rails-env>
470
+ <resolved type="boolean">false</resolved>
471
+ <updated-at type="datetime">2010-04-19T23:31:54Z</updated-at>
472
+ </group>
473
+ <group>
474
+ <action>unfollow</action>
475
+ <controller>shade_notes</controller>
476
+ <created-at type="datetime">2010-04-19T20:39:30Z</created-at>
477
+ <error-class>ActionView::MissingTemplate</error-class>
478
+ <error-message>ActionView::MissingTemplate: Missing template shade_notes/unfollow.erb in view path app/views</error-message>
479
+ <file>/data/myapp/releases/20100416200739/vendor/rails/actionpack/lib/action_view/paths.rb</file>
480
+ <id type="integer">1705850</id>
481
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
482
+ <line-number type="integer">66</line-number>
483
+ <most-recent-notice-at type="datetime">2010-04-19T20:39:30Z</most-recent-notice-at>
484
+ <notice-hash>b94660cab19f29057c4fcd94c3c5c48b</notice-hash>
485
+ <notices-count type="integer">1</notices-count>
486
+ <project-id type="integer">248</project-id>
487
+ <rails-env>production</rails-env>
488
+ <resolved type="boolean">false</resolved>
489
+ <updated-at type="datetime">2010-04-19T20:39:30Z</updated-at>
490
+ </group>
491
+ <group>
492
+ <action>show</action>
493
+ <controller>tags</controller>
494
+ <created-at type="datetime">2010-04-19T03:59:56Z</created-at>
495
+ <error-class>NoMethodError</error-class>
496
+ <error-message>NoMethodError: undefined method `equity' for nil:NilClass</error-message>
497
+ <file>/data/myapp/releases/20100416200739/app/views/shade_notes/_shade_note.html.erb</file>
498
+ <id type="integer">1701733</id>
499
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
500
+ <line-number type="integer">12</line-number>
501
+ <most-recent-notice-at type="datetime">2010-04-19T10:45:52Z</most-recent-notice-at>
502
+ <notice-hash>82fe9e4b12b7dbce23ae3f1936ecb5d7</notice-hash>
503
+ <notices-count type="integer">2</notices-count>
504
+ <project-id type="integer">248</project-id>
505
+ <rails-env>production</rails-env>
506
+ <resolved type="boolean">false</resolved>
507
+ <updated-at type="datetime">2010-04-19T10:45:52Z</updated-at>
508
+ </group>
509
+ <group>
510
+ <action>display_name</action>
511
+ <controller>settings</controller>
512
+ <created-at type="datetime">2010-04-18T20:54:44Z</created-at>
513
+ <error-class>ActiveRecord::StaleObjectError</error-class>
514
+ <error-message>ActiveRecord::StaleObjectError: Attempted to update a stale object</error-message>
515
+ <file>/data/myapp/releases/20100416200739/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb</file>
516
+ <id type="integer">1700843</id>
517
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
518
+ <line-number type="integer">89</line-number>
519
+ <most-recent-notice-at type="datetime">2010-04-18T20:54:44Z</most-recent-notice-at>
520
+ <notice-hash>43175a902ce471d659b1c7dde0d1737f</notice-hash>
521
+ <notices-count type="integer">1</notices-count>
522
+ <project-id type="integer">248</project-id>
523
+ <rails-env>production</rails-env>
524
+ <resolved type="boolean">false</resolved>
525
+ <updated-at type="datetime">2010-04-18T20:54:44Z</updated-at>
526
+ </group>
527
+ <group>
528
+ <action>display_name</action>
529
+ <controller>settings</controller>
530
+ <created-at type="datetime">2010-04-18T20:54:44Z</created-at>
531
+ <error-class>ActiveRecord::StaleObjectError</error-class>
532
+ <error-message>ActiveRecord::StaleObjectError: Attempted to update a stale object</error-message>
533
+ <file>/data/myapp/releases/20100416200739/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb</file>
534
+ <id type="integer">1700843</id>
535
+ <lighthouse-ticket-id type="integer" nil="true"></lighthouse-ticket-id>
536
+ <line-number type="integer">89</line-number>
537
+ <most-recent-notice-at type="datetime">2010-04-18T20:54:44Z</most-recent-notice-at>
538
+ <notice-hash>43175a902ce471d659b1c7dde0d1737f</notice-hash>
539
+ <notices-count type="integer">1</notices-count>
540
+ <project-id type="integer">248</project-id>
541
+ <rails-env>production</rails-env>
542
+ <resolved type="boolean">false</resolved>
543
+ <updated-at type="datetime">2010-04-18T20:54:44Z</updated-at>
544
+ </group>
545
+ </groups>