git_hub_bub 0.0.6 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d31891a90b22df2a157da85e2158361b8205e2b
4
- data.tar.gz: 9520dc67097429c0d153f0157431330a1385a9d3
3
+ metadata.gz: 518d845dbf010b33a1546a348be457d3a4e723f9
4
+ data.tar.gz: a85619661ec24c4db8c4aa0195a3bf4854476de4
5
5
  SHA512:
6
- metadata.gz: 1f64c2a1f22a8fb729643473d982218a00d76f35b5f6955ed564f3951048b80d984b22148d01d2140047bd63d1ed8d02e409f1e7c9f4363d4ea380a850e22371
7
- data.tar.gz: 5998e107923099f197273716ef8fbe106f00782793e4a45ef80a78f857026a22296f4b1edfe7282a4772f8833fd3bae6ca816aeea7d50b2a1d5f5aadbc0360fa
6
+ metadata.gz: 6b1f5dc7564d79e64185e3cbc630d46dfd36629ed1c8bcf8f2bac89a08c72a1fdfc36a0d604a640c701ecfe2c38dbfdc60b139d87c333ebce93549e12c805606
7
+ data.tar.gz: 2f95ab080a40d436bc80fcafeb4b93e336544643b28ebce4eb66b5a69d3e75af45bdcd64d09a53679152e4d083c103024e7f17a8ca99c8cfbae969ed4b4eb4d5
@@ -1,9 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.0.0
3
+ - 2.3.4
4
+ - 2.4.1
5
5
  - ruby-head
6
- - jruby-19mode
7
6
  matrix:
8
7
  allow_failures:
9
8
  - rvm: ruby-head
data/README.md CHANGED
@@ -22,6 +22,29 @@ gem 'git_hub_bub'
22
22
 
23
23
  Then run `$ bundle install`
24
24
 
25
+ ## Upgrading to v1
26
+
27
+ Version 0.x of this library would raise an exception on any non-200 response. The current version does not do this, it instead provides a method
28
+
29
+ ```ruby
30
+ response = GitHubBub.get("repoZ/railZ/railZ/issueZ")
31
+ response.success?
32
+ # => false
33
+ ```
34
+
35
+ > Note this only checks for 2.x status, it does not acount for any other status codes, best practice is to manually manage yourself
36
+
37
+ To preserve previous behavior of raising an error on non-200 status. You can set the `GIT_HUB_BUB_RAISE_ON_FAIL` environment variable to any value.
38
+
39
+ In v1 the ability to sleep to add a rate limit was added:
40
+
41
+ ```
42
+ response = GitHubBub.get('repos/rails/rails/issues')
43
+ response.rate_limit_sleep!
44
+ ```
45
+
46
+ As the number of available requests gets smaller and smaller this will sleep for longer and longer.
47
+
25
48
  ## GET Whatever you Want:
26
49
 
27
50
  To make requests to a `GET` endpoint use `GitHubBub.get`
@@ -42,6 +65,7 @@ And get pagination (if there is any):
42
65
  response.next_url # => "https://api.github.com/repositories/8514/issues?page=2"
43
66
  response.last_url? # => false
44
67
  response.pagination # => {"next_url"=>"https://api.github.com/repositories/8514/issues?page=2", "last_url"=>"https://api.github.com/repositories/8514/issues?page=18"}
68
+ response.rate_limit_remaining # => 60
45
69
  ```
46
70
 
47
71
  ## Passing Params
@@ -86,7 +110,6 @@ GitHubBub::Request::EXTRA_HEADERS = { "Content-Type" => "application/x-www-form-
86
110
 
87
111
  Keep in mind this will change them for _every_ request. If you need logic behind your default headers, consider adding a `before_send_callback` to conditionally modify headers
88
112
 
89
-
90
113
  ## Authenticated Requests
91
114
 
92
115
  Some GitHub endpoints require a user's authorization you can do that by passing in `token`:
@@ -103,6 +126,21 @@ GitHubBub.get('/user', {} {headers: {"Authorization" => "token a38ck38ckgoldfish
103
126
 
104
127
  You will need to use one of these every time the GitHub api says "as an authenticated user".
105
128
 
129
+ ## Rate limiting
130
+
131
+ GitHub requests are rate limited. With every request they send back information with the number of requests left and when the time window resets.
132
+
133
+ Instead of worrying about either of those direct measurements you can instead use this helper method:
134
+
135
+ ```
136
+ response = GitHubBub.get('repos/rails/rails/issues')
137
+ response.rate_limit_sleep!
138
+ ```
139
+
140
+ If you are repetitively calling the API you should use this method in each loop to prevent going over your bucket.
141
+
142
+ As your remaining request limit gets lower this method will sleep for incrementally longer time periods until your limit bucket is refilled. Since this behavior comes __after__ a request it is possible that this request was rate limited. GitHub will return a 403 when you are over your limit.
143
+
106
144
  ## Callbacks
107
145
 
108
146
  If you want to mess with the url or options before sending a request you can set a callback globally
@@ -142,7 +180,6 @@ PUT # => GitHubBub.put
142
180
  DELETE # => GitHubBub.delete
143
181
  ```
144
182
 
145
-
146
183
  ## Configuration
147
184
 
148
185
  You can use callbacks and there are some constants you can set, look in `GitHubBub::Request`. You will definetly want to set `GitHubBub::Request::USER_AGENT` It needs to be unique to your app: (http://developer.github.com/v3/#user-agent-required).
@@ -1,3 +1,14 @@
1
+ # Changelog
2
+
3
+ ## Master
4
+
5
+ ## 1.0.0
6
+
7
+ - Exceptions no longer raised on non 200 responses [#2]
8
+ - Can now get rate limit data from GitHubBub::Response
9
+ - Added ability to sleep to not go over rate limit by GitHubBub::Response
10
+ - Ruby support only includes 2.2+
11
+
1
12
  ## 0.0.5 (06/06/2014)
2
13
 
3
14
  - Ughhhh, re-push 0.0.4 with changes from origin master :)
@@ -20,10 +20,13 @@ Gem::Specification.new do |gem|
20
20
 
21
21
  gem.add_dependency "rrrretry"
22
22
  gem.add_dependency "excon"
23
+ gem.add_development_dependency "timecop"
24
+ gem.add_development_dependency "test-unit"
23
25
  gem.add_development_dependency "mocha"
24
26
  gem.add_development_dependency "rake"
25
27
  gem.add_development_dependency "vcr", '~> 2.5.0'
26
28
  gem.add_development_dependency "webmock", '~> 1.11.0'
27
29
  gem.add_development_dependency "dotenv"
28
- end
29
30
 
31
+ gem.required_ruby_version = '>= 2.2'
32
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'securerandom'
2
4
  require 'json'
3
5
  require 'uri'
@@ -13,10 +15,15 @@ module GitHubBub
13
15
  class << self
14
16
 
15
17
  def valid_token?(token)
16
- Request.get("https://#{ENV['GITHUB_APP_ID']}:#{ENV['GITHUB_APP_SECRET']}@api.github.com/applications/#{ENV['GITHUB_APP_ID']}/tokens/#{token}", {}, {skip_token: true})
17
- true
18
- rescue GitHubBub::RequestError
19
- false
18
+ response = Request.get("https://#{ENV['GITHUB_APP_ID']}:#{ENV['GITHUB_APP_SECRET']}@api.github.com/applications/#{ENV['GITHUB_APP_ID']}/tokens/#{token}", {}, {skip_token: true})
19
+ return response if response.success?
20
+ return false if response.status == 404
21
+ rescue GitHubBub::RequestError => e
22
+ if Request::RAISE_ON_FAIL
23
+ return false
24
+ else
25
+ raise e
26
+ end
20
27
  end
21
28
 
22
29
  def head(*args)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GitHubBub
2
4
  class RequestError < StandardError; end
3
5
 
@@ -10,6 +12,7 @@ module GitHubBub
10
12
  BASE_HEADERS = EXTRA_HEADERS.merge({'Accept' => "application/#{GITHUB_VERSION}", "User-Agent" => USER_AGENT})
11
13
  BASE_OPTIONS = { omit_default_port: true }
12
14
  RETRIES = 1
15
+ RAISE_ON_FAIL = ENV["GIT_HUB_BUB_RAISE_ON_FAIL"]
13
16
 
14
17
  def initialize(url, query = {}, options = {})
15
18
  self.url = url =~ /^http(\w?)\:\/\// ? url : File.join(BASE_URI, url)
@@ -92,7 +95,10 @@ module GitHubBub
92
95
  response = RETRIES.times.retry do
93
96
  GitHubBub::Response.create(yield)
94
97
  end
95
- raise RequestError, "message: '#{response.json_body['message']}', url: '#{url}', response: '#{response.inspect}'" unless response.status.to_s =~ /^2.*/
98
+
99
+ if RAISE_ON_FAIL
100
+ raise RequestError, "message: '#{response.json_body['message']}', url: '#{url}', response: '#{response.inspect}'" unless response.success?
101
+ end
96
102
  return response
97
103
  end
98
104
 
@@ -1,14 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'date'
4
+
1
5
  module GitHubBub
2
6
  class Response < Excon::Response
3
-
4
7
  def self.create(response)
5
8
  self.new(response.data)
6
9
  end
7
10
 
11
+ def rate_limit_remaining
12
+ limit_remaining = headers["X-RateLimit-Limit"]
13
+ Integer(limit_remaining)
14
+ end
15
+
16
+ def rate_limit_reset_time_left # in seconds
17
+ utc_epoch_seconds = headers["X-RateLimit-Reset"]
18
+ utc_epoch_seconds = Integer(utc_epoch_seconds)
19
+ return utc_epoch_seconds - Time.now.utc.to_i
20
+ end
21
+
22
+ # When no time is left we want to sleep until our limit is reset
23
+ # i.e. remaining is 1 so time/1 => time
24
+ #
25
+ # When we have plenty of requests left then we want to sleep for too long
26
+ # i.e. time / 1000 => smaller amount of time
27
+ def rate_limit_sleep!(bypass_sleep: false)
28
+ remaining = rate_limit_remaining
29
+ time_left = rate_limit_reset_time_left
30
+ return 0 if time_left <= 0
31
+ return 0 if remaining > 1000
32
+
33
+ if remaining > 0
34
+ val = time_left / remaining.to_f
35
+ else
36
+ val = time_left
37
+ end
38
+ sleep(val) unless bypass_sleep
39
+ return val
40
+ end
41
+
8
42
  def json_body
9
43
  ::JSON.parse(self.body)
10
44
  end
11
45
 
46
+ def success?
47
+ status.to_s =~ /^2.*/
48
+ end
49
+
12
50
  def pagination
13
51
  @pagination ||= parse_pagination
14
52
  end
@@ -1,3 +1,3 @@
1
1
  module GitHubBub
2
- VERSION = "0.0.6"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -47,4 +47,59 @@ class ResponseTest < Test::Unit::TestCase
47
47
  assert response.last_page?
48
48
  refute response.first_page?
49
49
  end
50
- end
50
+
51
+ def test_rate_limit_remaining
52
+ response = GitHubBub::Response.new(rails_issues_data(:last))
53
+ assert_equal 60, response.rate_limit_remaining
54
+ end
55
+
56
+ def test_rate_limit_reset_time_left
57
+ epoch_time = 1504196685
58
+ Timecop.freeze(Time.at(epoch_time).to_datetime) do
59
+ response = GitHubBub::Response.new(rails_issues_data(:last))
60
+ assert_equal 0, response.rate_limit_reset_time_left
61
+ end
62
+
63
+ Timecop.freeze(Time.at(epoch_time - 2 ).to_datetime) do
64
+ response = GitHubBub::Response.new(rails_issues_data(:last))
65
+ assert_equal 2, response.rate_limit_reset_time_left
66
+ end
67
+ end
68
+
69
+ def test_rate_limit_sleep
70
+ epoch_time = 1504196685
71
+
72
+ # We are equal to our rate limit offset time
73
+ Timecop.freeze(Time.at(epoch_time).to_datetime) do
74
+ response = GitHubBub::Response.new(rails_issues_data(:last))
75
+ assert_equal 0, response.rate_limit_sleep!(bypass_sleep: true)
76
+ end
77
+
78
+ # We are beyond our rate limit offset time
79
+ Timecop.freeze(Time.at(epoch_time + 1).to_datetime) do
80
+ response = GitHubBub::Response.new(rails_issues_data(:last))
81
+ assert_equal 0, response.rate_limit_sleep!(bypass_sleep: true)
82
+ end
83
+
84
+ # We have lots of requests
85
+ Timecop.freeze(Time.at(epoch_time - 1).to_datetime) do
86
+ response = GitHubBub::Response.new(rails_issues_data(:last))
87
+ response.headers["X-RateLimit-Limit"] = "5000"
88
+ assert_equal 0, response.rate_limit_sleep!(bypass_sleep: true)
89
+ end
90
+
91
+ # We have limits zero remaining, and are 1 second away from reset
92
+ Timecop.freeze(Time.at(epoch_time - 1).to_datetime) do
93
+ response = GitHubBub::Response.new(rails_issues_data(:last))
94
+ response.headers["X-RateLimit-Limit"] = "0"
95
+ assert_equal 1, response.rate_limit_sleep!(bypass_sleep: true)
96
+ end
97
+
98
+ # We have 10 requests remaining and are 1 second away from reset
99
+ Timecop.freeze(Time.at(epoch_time - 1).to_datetime) do
100
+ response = GitHubBub::Response.new(rails_issues_data(:last))
101
+ response.headers["X-RateLimit-Limit"] = "10"
102
+ assert_equal 1.0/10, response.rate_limit_sleep!(bypass_sleep: true)
103
+ end
104
+ end
105
+ end
@@ -7,6 +7,7 @@ require 'git_hub_bub'
7
7
  require 'test/unit'
8
8
  require 'mocha/test_unit'
9
9
  require 'webmock'
10
+ require 'timecop'
10
11
 
11
12
  def schneems_orgs_data
12
13
  {:body=>"[{\"login\":\"gowalla\",\"id\":317884,\"url\":\"https://api.github.com/orgs/gowalla\",\"repos_url\":\"https://api.github.com/orgs/gowalla/repos\",\"events_url\":\"https://api.github.com/orgs/gowalla/events\",\"members_url\":\"https://api.github.com/orgs/gowalla/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/gowalla/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/72746c59eaafb328456c345dc3b95999?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"austinonrails\",\"id\":43000,\"url\":\"https://api.github.com/orgs/austinonrails\",\"repos_url\":\"https://api.github.com/orgs/austinonrails/repos\",\"events_url\":\"https://api.github.com/orgs/austinonrails/events\",\"members_url\":\"https://api.github.com/orgs/austinonrails/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/austinonrails/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/da3ed72ff4f24a1670a5497d7b588bf4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"heroku\",\"id\":23211,\"url\":\"https://api.github.com/orgs/heroku\",\"repos_url\":\"https://api.github.com/orgs/heroku/repos\",\"events_url\":\"https://api.github.com/orgs/heroku/events\",\"members_url\":\"https://api.github.com/orgs/heroku/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/heroku/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/e327d6043ba309e2bfc8b56110b6dbbe?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"opro\",\"id\":2106073,\"url\":\"https://api.github.com/orgs/opro\",\"repos_url\":\"https://api.github.com/orgs/opro/repos\",\"events_url\":\"https://api.github.com/orgs/opro/events\",\"members_url\":\"https://api.github.com/orgs/opro/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/opro/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/f1fd003752171548706b5a3a9e820f31?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"codetriage\",\"id\":2896855,\"url\":\"https://api.github.com/orgs/codetriage\",\"repos_url\":\"https://api.github.com/orgs/codetriage/repos\",\"events_url\":\"https://api.github.com/orgs/codetriage/events\",\"members_url\":\"https://api.github.com/orgs/codetriage/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/codetriage/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"sumodocs\",\"id\":3372962,\"url\":\"https://api.github.com/orgs/sumodocs\",\"repos_url\":\"https://api.github.com/orgs/sumodocs/repos\",\"events_url\":\"https://api.github.com/orgs/sumodocs/events\",\"members_url\":\"https://api.github.com/orgs/sumodocs/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/sumodocs/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"rails\",\"id\":4223,\"url\":\"https://api.github.com/orgs/rails\",\"repos_url\":\"https://api.github.com/orgs/rails/repos\",\"events_url\":\"https://api.github.com/orgs/rails/events\",\"members_url\":\"https://api.github.com/orgs/rails/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/rails/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/30f39a09e233e8369dddf6feb4be0308?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"sharpstone\",\"id\":3969584,\"url\":\"https://api.github.com/orgs/sharpstone\",\"repos_url\":\"https://api.github.com/orgs/sharpstone/repos\",\"events_url\":\"https://api.github.com/orgs/sharpstone/events\",\"members_url\":\"https://api.github.com/orgs/sharpstone/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/sharpstone/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"centerforstudents\",\"id\":4041835,\"url\":\"https://api.github.com/orgs/centerforstudents\",\"repos_url\":\"https://api.github.com/orgs/centerforstudents/repos\",\"events_url\":\"https://api.github.com/orgs/centerforstudents/events\",\"members_url\":\"https://api.github.com/orgs/centerforstudents/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/centerforstudents/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"railsgirls\",\"id\":1641104,\"url\":\"https://api.github.com/orgs/railsgirls\",\"repos_url\":\"https://api.github.com/orgs/railsgirls/repos\",\"events_url\":\"https://api.github.com/orgs/railsgirls/events\",\"members_url\":\"https://api.github.com/orgs/railsgirls/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/railsgirls/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/ae1295e0d53f3b81def634344b6644c1?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"ruby-no-kai\",\"id\":207834,\"url\":\"https://api.github.com/orgs/ruby-no-kai\",\"repos_url\":\"https://api.github.com/orgs/ruby-no-kai/repos\",\"events_url\":\"https://api.github.com/orgs/ruby-no-kai/events\",\"members_url\":\"https://api.github.com/orgs/ruby-no-kai/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/ruby-no-kai/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/ea5efa6071bc5fd5f9f74949cc743407?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"}]", :headers=>{"Server"=>"GitHub.com", "Date"=>"Mon, 20 May 2013 19:49:07 GMT", "Content-Type"=>"application/json; charset=utf-8", "Connection"=>"keep-alive", "Status"=>"200 OK", "X-RateLimit-Limit"=>"5000", "X-RateLimit-Remaining"=>"4993", "Vary"=>"Accept, Authorization, Cookie, Accept-Encoding", "Cache-Control"=>"private, max-age=60, s-maxage=60", "Last-Modified"=>"Mon, 20 May 2013 19:42:52 GMT", "ETag"=>"\"0ecbc232dd0a0b86c82ad92050ea38aa\"", "X-OAuth-Scopes"=>"user:email", "X-Accepted-OAuth-Scopes"=>"repo, user", "X-GitHub-Media-Type"=>"github.beta; param=3.raw; format=json", "X-Content-Type-Options"=>"nosniff", "Content-Length"=>"5812", "Access-Control-Allow-Credentials"=>"true", "Access-Control-Expose-Headers"=>"Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes", "Access-Control-Allow-Origin"=>"*"}, :status=>200, :remote_ip=>"207.97.227.243"}
@@ -16,11 +17,11 @@ end
16
17
  def rails_issues_data(page = :first)
17
18
  case page
18
19
  when :first
19
- {:body=>"[{\"url\":\"https://api.github.com/repos/rails/rails/issues/10694\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10694/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10694/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10694/events\",\"html_url\":\"https://github.com/rails/rails/issues/10694\",\"id\":14534225,\"number\":10694,\"title\":\"Fix regression in has_secure_password.\",\"user\":{\"login\":\"steveklabnik\",\"id\":27786,\"avatar_url\":\"https://secure.gravatar.com/avatar/233c279c012ebac792aaa805f966cbc7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"233c279c012ebac792aaa805f966cbc7\",\"url\":\"https://api.github.com/users/steveklabnik\",\"html_url\":\"https://github.com/steveklabnik\",\"followers_url\":\"https://api.github.com/users/steveklabnik/followers\",\"following_url\":\"https://api.github.com/users/steveklabnik/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/steveklabnik/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/steveklabnik/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/steveklabnik/subscriptions\",\"organizations_url\":\"https://api.github.com/users/steveklabnik/orgs\",\"repos_url\":\"https://api.github.com/users/steveklabnik/repos\",\"events_url\":\"https://api.github.com/users/steveklabnik/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/steveklabnik/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":4,\"created_at\":\"2013-05-20T19:14:39Z\",\"updated_at\":\"2013-05-20T19:42:52Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10694\",\"diff_url\":\"https://github.com/rails/rails/pull/10694.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10694.patch\"},\"body\":\"If the confirmation was blank, but the password wasn't, it would still save.\\r\\n\\r\\nSent via a PR for feedback. Password stuff is tricky.\\r\\n\\r\\n/cc @josevalim, @senny\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10693\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10693/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10693/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10693/events\",\"html_url\":\"https://github.com/rails/rails/issues/10693\",\"id\":14514513,\"number\":10693,\"title\":\"ActiveRecord occasionally fails to assign associations when non-default foreign_key used\",\"user\":{\"login\":\"slivu\",\"id\":1230455,\"avatar_url\":\"https://secure.gravatar.com/avatar/431eccb8e2c45e43221e5aa52f304857?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"431eccb8e2c45e43221e5aa52f304857\",\"url\":\"https://api.github.com/users/slivu\",\"html_url\":\"https://github.com/slivu\",\"followers_url\":\"https://api.github.com/users/slivu/followers\",\"following_url\":\"https://api.github.com/users/slivu/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/slivu/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/slivu/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/slivu/subscriptions\",\"organizations_url\":\"https://api.github.com/users/slivu/orgs\",\"repos_url\":\"https://api.github.com/users/slivu/repos\",\"events_url\":\"https://api.github.com/users/slivu/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/slivu/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-20T10:28:44Z\",\"updated_at\":\"2013-05-20T10:28:44Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Somehow it using correct key only once...\\r\\n\\r\\n```\\r\\nSQLite3::SQLException: no such column: cities.code:\\r\\nUPDATE \\\"cities\\\" SET \\\"state_code\\\" = NULL WHERE\\r\\n\\\"cities\\\".\\\"state_code\\\" = 'W' AND\\r\\n\\\"cities\\\".\\\"code\\\" IS NULL\\r\\n```\\r\\n\\r\\nNot sure why it is attaching `\\\"cities\\\".\\\"code\\\" IS NULL`\\r\\n\\r\\nIt happens only when state already has some cities attached and\\r\\ni'm trying to set new cities using `#cities=`\\r\\n\\r\\nHere is how to repeat:\\r\\n\\r\\n```ruby\\r\\nrequire 'logger'\\r\\nrequire 'active_record'\\r\\n\\r\\nActiveRecord::Base.logger = Logger.new(STDERR)\\r\\nActiveRecord::Base.establish_connection(\\r\\n adapter: \\\"sqlite3\\\",\\r\\n database: \\\":memory:\\\"\\r\\n)\\r\\n\\r\\nActiveRecord::Schema.define do\\r\\n create_table :states do |table|\\r\\n table.column :name, :string\\r\\n table.column :code, :string\\r\\n end\\r\\n add_index :states, :code\\r\\n\\r\\n create_table :cities do |table|\\r\\n table.column :name, :string\\r\\n table.column :state_code, :string\\r\\n end\\r\\n add_index :cities, :state_code\\r\\nend\\r\\n\\r\\nclass State < ActiveRecord::Base\\r\\n has_many :cities, foreign_key: :state_code, primary_key: :code\\r\\nend\\r\\n\\r\\nclass City < ActiveRecord::Base\\r\\n belongs_to :state, foreign_key: :state_code, primary_key: :code\\r\\nend\\r\\n\\r\\nstates = (1..10).to_a.inject([]) do |s,n|\\r\\n s << State.create(name: n.to_s, code: ('A'..'Z').to_a.sample)\\r\\nend\\r\\n\\r\\ncities = (1..10).to_a.inject([]) do |c,n|\\r\\n c << City.create(name: n.to_s, state: states.sample)\\r\\nend\\r\\n\\r\\nstate, state_cities = states.sample, cities.sample(5)\\r\\nstate_cities_n = state.cities.size\\r\\np state, state_cities\\r\\nbegin\\r\\n state.cities = state_cities\\r\\nrescue => e\\r\\n puts '', '===', e.message, '===', ''\\r\\nend\\r\\nstate.save!\\r\\nstate.reload\\r\\np [state_cities_n, state.cities.size]\\r\\n```\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10690\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10690/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10690/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10690/events\",\"html_url\":\"https://github.com/rails/rails/issues/10690\",\"id\":14506210,\"number\":10690,\"title\":\"Remove attributes_protected_by_default reference\",\"user\":{\"login\":\"robertomiranda\",\"id\":505427,\"avatar_url\":\"https://secure.gravatar.com/avatar/22f7e57c00559503a7da07eb1e93fe88?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"22f7e57c00559503a7da07eb1e93fe88\",\"url\":\"https://api.github.com/users/robertomiranda\",\"html_url\":\"https://github.com/robertomiranda\",\"followers_url\":\"https://api.github.com/users/robertomiranda/followers\",\"following_url\":\"https://api.github.com/users/robertomiranda/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/robertomiranda/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/robertomiranda/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/robertomiranda/subscriptions\",\"organizations_url\":\"https://api.github.com/users/robertomiranda/orgs\",\"repos_url\":\"https://api.github.com/users/robertomiranda/repos\",\"events_url\":\"https://api.github.com/users/robertomiranda/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/robertomiranda/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-20T03:39:49Z\",\"updated_at\":\"2013-05-20T04:02:06Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10690\",\"diff_url\":\"https://github.com/rails/rails/pull/10690.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10690.patch\"},\"body\":\"Remove attributes_protected_by_default reference, since MassAssignmentSecurity was removed from ActiveModel f8c9a4d3e88181\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10689\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10689/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10689/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10689/events\",\"html_url\":\"https://github.com/rails/rails/issues/10689\",\"id\":14505062,\"number\":10689,\"title\":\"#becomes! sets sti_value properly\",\"user\":{\"login\":\"jwaldrip\",\"id\":43164,\"avatar_url\":\"https://secure.gravatar.com/avatar/ca94b06e32f746968f0aec970a702a0c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"ca94b06e32f746968f0aec970a702a0c\",\"url\":\"https://api.github.com/users/jwaldrip\",\"html_url\":\"https://github.com/jwaldrip\",\"followers_url\":\"https://api.github.com/users/jwaldrip/followers\",\"following_url\":\"https://api.github.com/users/jwaldrip/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jwaldrip/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jwaldrip/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jwaldrip/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jwaldrip/orgs\",\"repos_url\":\"https://api.github.com/users/jwaldrip/repos\",\"events_url\":\"https://api.github.com/users/jwaldrip/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jwaldrip/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-20T02:23:44Z\",\"updated_at\":\"2013-05-20T02:23:44Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10689\",\"diff_url\":\"https://github.com/rails/rails/pull/10689.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10689.patch\"},\"body\":\"So the tests and docs weren'y very clear in how this was supposed to work. But wouldn't it make sense that it should work with the following change. If so, I will add the tests and add an entry to the changelog.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10687\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10687/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10687/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10687/events\",\"html_url\":\"https://github.com/rails/rails/issues/10687\",\"id\":14502156,\"number\":10687,\"title\":\"Allow selection of the eRuby implementation for templating.\",\"user\":{\"login\":\"GICodeWarrior\",\"id\":19803,\"avatar_url\":\"https://secure.gravatar.com/avatar/880b0cdaa92232b8914645438b0a1b7c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"880b0cdaa92232b8914645438b0a1b7c\",\"url\":\"https://api.github.com/users/GICodeWarrior\",\"html_url\":\"https://github.com/GICodeWarrior\",\"followers_url\":\"https://api.github.com/users/GICodeWarrior/followers\",\"following_url\":\"https://api.github.com/users/GICodeWarrior/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/GICodeWarrior/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/GICodeWarrior/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/GICodeWarrior/subscriptions\",\"organizations_url\":\"https://api.github.com/users/GICodeWarrior/orgs\",\"repos_url\":\"https://api.github.com/users/GICodeWarrior/repos\",\"events_url\":\"https://api.github.com/users/GICodeWarrior/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/GICodeWarrior/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-19T21:51:22Z\",\"updated_at\":\"2013-05-19T21:51:22Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10687\",\"diff_url\":\"https://github.com/rails/rails/pull/10687.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10687.patch\"},\"body\":\"This presents an avenue for configuration of Erubis enhancers as well. It\\r\\nis an alternative to the following reverted pull request.\\r\\nhttps://github.com/rails/rails/pull/7033\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10686\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10686/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10686/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10686/events\",\"html_url\":\"https://github.com/rails/rails/issues/10686\",\"id\":14498378,\"number\":10686,\"title\":\"Fix error due to Time.at \",\"user\":{\"login\":\"vipulnsward\",\"id\":567626,\"avatar_url\":\"https://secure.gravatar.com/avatar/f459742822cf8347e83d5c445378a934?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f459742822cf8347e83d5c445378a934\",\"url\":\"https://api.github.com/users/vipulnsward\",\"html_url\":\"https://github.com/vipulnsward\",\"followers_url\":\"https://api.github.com/users/vipulnsward/followers\",\"following_url\":\"https://api.github.com/users/vipulnsward/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/vipulnsward/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/vipulnsward/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/vipulnsward/subscriptions\",\"organizations_url\":\"https://api.github.com/users/vipulnsward/orgs\",\"repos_url\":\"https://api.github.com/users/vipulnsward/repos\",\"events_url\":\"https://api.github.com/users/vipulnsward/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/vipulnsward/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-19T16:30:35Z\",\"updated_at\":\"2013-05-19T16:30:35Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10686\",\"diff_url\":\"https://github.com/rails/rails/pull/10686.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10686.patch\"},\"body\":\"In changes to fix https://bugs.ruby-lang.org/issues/8173. `Time.at` now requires an object to implement `to_int`. Aliasing `to_int` to `to_i` fixes this.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10685\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10685/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10685/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10685/events\",\"html_url\":\"https://github.com/rails/rails/issues/10685\",\"id\":14498307,\"number\":10685,\"title\":\"ActiveSupport::Dependencies.const_missing can choose incorrect from_mod\",\"user\":{\"login\":\"trevorturk\",\"id\":402,\"avatar_url\":\"https://secure.gravatar.com/avatar/c0b6fb3807d7d4f255463ed168c75897?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"c0b6fb3807d7d4f255463ed168c75897\",\"url\":\"https://api.github.com/users/trevorturk\",\"html_url\":\"https://github.com/trevorturk\",\"followers_url\":\"https://api.github.com/users/trevorturk/followers\",\"following_url\":\"https://api.github.com/users/trevorturk/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/trevorturk/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/trevorturk/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/trevorturk/subscriptions\",\"organizations_url\":\"https://api.github.com/users/trevorturk/orgs\",\"repos_url\":\"https://api.github.com/users/trevorturk/repos\",\"events_url\":\"https://api.github.com/users/trevorturk/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/trevorturk/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-19T16:24:59Z\",\"updated_at\":\"2013-05-19T17:41:50Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I noticed an issue while using the MailView gem, which someone discovered a few months ago: https://github.com/37signals/mail_view/issues/37\\r\\n\\r\\nI traced the issue down to this commit: https://github.com/rails/rails/commit/2ed325a3e90fc17c2d52a26bd1799b5f4e4bdf88\\r\\n\\r\\nThe issue manifests as an exception \\\"A copy of <name> has been removed from the module tree but is still active!\\\" ...which is coming from here: https://github.com/rails/rails/blob/master/activesupport/lib/active_support/dependencies.rb#L444-L446\\r\\n\\r\\nThe MailView gem asks you to put a mailer in `app/mailers` like so:\\r\\n\\r\\n```ruby\\r\\nclass MessagePreview < MailView\\r\\n def example\\r\\n ExampleMailer.example\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nIf you change any model or controller in your application, you are forced to `touch tmp/restart.txt` to avoid raising the exception. I'm able to work around the issue by using the double-colon thingamajig to ensure we're at the top namespace:\\r\\n\\r\\n```ruby\\r\\nclass MessagePreview < MailView\\r\\n def example\\r\\n ::ExampleMailer.example\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\n...but notice it's done on the mailer. I did some debugging and noticed something strange in `load_missing_constant` like so:\\r\\n\\r\\n```ruby\\r\\nload_missing_constant(from_mod, const_name)\\r\\nfrom_mod = MessagePreview\\r\\nconst_name = ExampleMailer\\r\\n```\\r\\n\\r\\nSo, I believe `Dependencies` is (incorrectly?) assuming that `ExampleMailer` is defined in `MessagePreview` when it is just a regular mailer defined like so:\\r\\n\\r\\n```ruby\\r\\nclass ExampleMailer < ApplicationMailer\\r\\n def example\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\n...which, I believe was changed by this commit: https://github.com/rails/rails/commit/2ed325a3e90fc17c2d52a26bd1799b5f4e4bdf88\\r\\n\\r\\nI'm not sure if this is a bug with Rails or with MailView, to be honest. I haven't looked at the ActiveSupport::Dependencies code until now. Something seems fishy, though, so I thought I should open an issue here to get some more :eyes: on it. \\r\\n\\r\\n/cc @fxn \\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10682\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10682/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10682/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10682/events\",\"html_url\":\"https://github.com/rails/rails/issues/10682\",\"id\":14491022,\"number\":10682,\"title\":\"Adds a class level #destroy! method, which raises an\",\"user\":{\"login\":\"fabiokr\",\"id\":21800,\"avatar_url\":\"https://secure.gravatar.com/avatar/67ac8dcae2fde06e9b4833e9d3796e4c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"67ac8dcae2fde06e9b4833e9d3796e4c\",\"url\":\"https://api.github.com/users/fabiokr\",\"html_url\":\"https://github.com/fabiokr\",\"followers_url\":\"https://api.github.com/users/fabiokr/followers\",\"following_url\":\"https://api.github.com/users/fabiokr/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/fabiokr/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/fabiokr/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/fabiokr/subscriptions\",\"organizations_url\":\"https://api.github.com/users/fabiokr/orgs\",\"repos_url\":\"https://api.github.com/users/fabiokr/repos\",\"events_url\":\"https://api.github.com/users/fabiokr/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/fabiokr/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-19T01:48:16Z\",\"updated_at\":\"2013-05-19T01:48:16Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10682\",\"diff_url\":\"https://github.com/rails/rails/pull/10682.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10682.patch\"},\"body\":\"4faaa811614b408 instroduces the instance level `#destroy!` method, which raises ActiveRecord::RecordNotDestroyed on failure. \\r\\n\\r\\nThis PR adds a class level `destroy!` method, which delegates to the instance `destroy!` method. That way, one can do `Model.destroy!(id)`.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10681\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10681/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10681/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10681/events\",\"html_url\":\"https://github.com/rails/rails/issues/10681\",\"id\":14489482,\"number\":10681,\"title\":\"autosave_association issue that occurs when table has unique index (3.2.x backport)\",\"user\":{\"login\":\"jholton\",\"id\":733873,\"avatar_url\":\"https://secure.gravatar.com/avatar/f6f9bd18dcbce19b4e0d9c6cba2cf329?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f6f9bd18dcbce19b4e0d9c6cba2cf329\",\"url\":\"https://api.github.com/users/jholton\",\"html_url\":\"https://github.com/jholton\",\"followers_url\":\"https://api.github.com/users/jholton/followers\",\"following_url\":\"https://api.github.com/users/jholton/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jholton/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jholton/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jholton/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jholton/orgs\",\"repos_url\":\"https://api.github.com/users/jholton/repos\",\"events_url\":\"https://api.github.com/users/jholton/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jholton/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-18T22:22:28Z\",\"updated_at\":\"2013-05-18T22:22:28Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10681\",\"diff_url\":\"https://github.com/rails/rails/pull/10681.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10681.patch\"},\"body\":\"This is a backport of #10417\\r\\n\\r\\nThe issue:\\r\\nPer the comments in pull #3329, \\r\\nIf you have a table with a unique field index, and you mark a record for destruction, and you build a new record with the same value as the unique field, then when you call save, a database level unique index error will be thrown.\\r\\n\\r\\nThis happens because the record destruction happens after record creation.\\r\\n\\r\\nIn this pull request, I moved the record destruction ahead of the record creation.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10679\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10679/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10679/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10679/events\",\"html_url\":\"https://github.com/rails/rails/issues/10679\",\"id\":14487813,\"number\":10679,\"title\":\"Improper generator syntax for controller, model and scaffold within a module\",\"user\":{\"login\":\"AJ-Acevedo\",\"id\":953092,\"avatar_url\":\"https://secure.gravatar.com/avatar/13935313a12b251732345172e91557d6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"13935313a12b251732345172e91557d6\",\"url\":\"https://api.github.com/users/AJ-Acevedo\",\"html_url\":\"https://github.com/AJ-Acevedo\",\"followers_url\":\"https://api.github.com/users/AJ-Acevedo/followers\",\"following_url\":\"https://api.github.com/users/AJ-Acevedo/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/AJ-Acevedo/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/AJ-Acevedo/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/AJ-Acevedo/subscriptions\",\"organizations_url\":\"https://api.github.com/users/AJ-Acevedo/orgs\",\"repos_url\":\"https://api.github.com/users/AJ-Acevedo/repos\",\"events_url\":\"https://api.github.com/users/AJ-Acevedo/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/AJ-Acevedo/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-18T19:35:28Z\",\"updated_at\":\"2013-05-18T19:51:46Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I have a few concerns about the way the rails generator creates a controller, model, helper and a scaffold within a nested module. \\r\\n\\r\\n1. If you generate a controller `rails g controller bar/post index` and the `bar` module is not previously defined, rails will output an 'uninitialized constant' error.\\r\\n2. The generator does not follow the ruby idiom for nesting modules.\\r\\n3. Using the generator with a module requires a lot of refactoring to clean up the code.\\r\\n\\r\\n\\r\\nAccording to `rails g controller --help`:\\r\\n\\r\\n*To create a controller within a module, specify the controller name as a\\r\\n path like 'parent_module/controller_name'.*\\r\\n\\r\\n\\r\\n**STEPS TO REPRODUCE:**\\r\\n`$ rails plugin new foo --mountable`\\r\\n`$ rails g controller bar/post index `\\r\\n\\r\\n```ruby\\r\\n# foo/app/controllers/foo/bar/post_controller.rb\\r\\nrequire_dependency \\\"foo/application_controller\\\"\\r\\n\\r\\nmodule Foo\\r\\n class Bar::PostController < ApplicationController\\r\\n def index\\r\\n end\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nThe proper syntax for generating a controller within a module should be:\\r\\n\\r\\n```ruby\\r\\n# foo/app/controllers/foo/bar/post_controller.rb\\r\\nrequire_dependency \\\"foo/application_controller\\\"\\r\\n\\r\\nmodule Foo\\r\\n module Bar\\r\\n class PostController < ApplicationController\\r\\n def index\\r\\n end\\r\\n end\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nI have verified this behavior with the generator for controller, model, helper and scaffold.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10677\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10677/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10677/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10677/events\",\"html_url\":\"https://github.com/rails/rails/issues/10677\",\"id\":14482957,\"number\":10677,\"title\":\"Indexing or Unindexing single columns of a single table via migration generator\",\"user\":{\"login\":\"frankapimenta\",\"id\":497761,\"avatar_url\":\"https://secure.gravatar.com/avatar/d8aae6bb205ba190b1710a17d4f1b800?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"d8aae6bb205ba190b1710a17d4f1b800\",\"url\":\"https://api.github.com/users/frankapimenta\",\"html_url\":\"https://github.com/frankapimenta\",\"followers_url\":\"https://api.github.com/users/frankapimenta/followers\",\"following_url\":\"https://api.github.com/users/frankapimenta/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/frankapimenta/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/frankapimenta/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/frankapimenta/subscriptions\",\"organizations_url\":\"https://api.github.com/users/frankapimenta/orgs\",\"repos_url\":\"https://api.github.com/users/frankapimenta/repos\",\"events_url\":\"https://api.github.com/users/frankapimenta/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/frankapimenta/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/railties\",\"name\":\"railties\",\"color\":\"8BE06E\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":5,\"created_at\":\"2013-05-18T12:36:48Z\",\"updated_at\":\"2013-05-18T22:55:21Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10677\",\"diff_url\":\"https://github.com/rails/rails/pull/10677.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10677.patch\"},\"body\":\"Sometimes happens that later in the development process one realizes that a few columns of a particular table should have been indexed.\\r\\n\\r\\nThis pull request easies the addition and removal of indexes of single columns on/from a single table by using the migration generator via CLI\\r\\n\\r\\nThe changelog as well as the code provides the cases of use.\\r\\n\\r\\nLooking forward to your feedback.\\r\\n\\r\\nFrank Pimenta\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10674\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10674/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10674/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10674/events\",\"html_url\":\"https://github.com/rails/rails/issues/10674\",\"id\":14478218,\"number\":10674,\"title\":\"@_template is nil when assert_template is used in combination with open_session in an integration test\",\"user\":{\"login\":\"rubys\",\"id\":4815,\"avatar_url\":\"https://secure.gravatar.com/avatar/e2dda5e47fccc5ff0daa87debf48162b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"e2dda5e47fccc5ff0daa87debf48162b\",\"url\":\"https://api.github.com/users/rubys\",\"html_url\":\"https://github.com/rubys\",\"followers_url\":\"https://api.github.com/users/rubys/followers\",\"following_url\":\"https://api.github.com/users/rubys/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/rubys/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/rubys/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/rubys/subscriptions\",\"organizations_url\":\"https://api.github.com/users/rubys/orgs\",\"repos_url\":\"https://api.github.com/users/rubys/repos\",\"events_url\":\"https://api.github.com/users/rubys/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/rubys/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-18T02:36:56Z\",\"updated_at\":\"2013-05-18T02:36:56Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Introduced by 3073c531983de243219fb55be93fbcebfdd9c44e\\r\\n\\r\\nReproduction instructions: http://intertwingly.net/tmp/session.html\\r\\n\\r\\nBisect output:\\r\\n\\r\\n 3073c531983de243219fb55be93fbcebfdd9c44e is the first bad commit\\r\\n commit 3073c531983de243219fb55be93fbcebfdd9c44e\\r\\n Author: Ryan Davis <ryand-ruby@zenspider.com>\\r\\n Date: Mon May 6 17:38:45 2013 -0700\\r\\n\\r\\n Updates to make rails 4 happy with minitest 5:\\r\\n\\r\\n + Namespace changes, overhaul of runners.\\r\\n + Internal ivar name changes\\r\\n - Removed a logger globally applied to tests that spew everywhere?!?\\r\\n + Override Minitest#__run to sort tests by name.\\r\\n + Reworked testing isolation to work with the new cleaner architecture.\\r\\n - Removed a bunch of tests that just test minitest straight up. I think\\r\\n these changes were all merged to minitest 4 a long time ago.\\r\\n - Minor report output differences.\\r\\n\\r\\n :040000 040000 295d8c9281b644f5767b883e5ef4c41b89e2bb7d\\r\\n f2478b2d3d08698f2e3bcbe876e803b74c870116 M actionpack\\r\\n :040000 040000 35194c85c67ac4efb09cfb6c5b5ba3c5914cc296\\r\\n 209193156de0f6678519d7c62859e90d1031e698 M activemodel\\r\\n :040000 040000 a43d8d2402ea77428dd373495b7b6710c734546e\\r\\n 9334b986b22b0f4b893eab70debe8a9137909610 M activesupport\\r\\n :040000 040000 0847ad28a1ea82d9c847246fc6c9122d23a8a120\\r\\n ae0eb9f69b707e925de716bbe217ea9b9ce0e7b5 M railties\\r\\n bisect run success\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10673\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10673/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10673/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10673/events\",\"html_url\":\"https://github.com/rails/rails/issues/10673\",\"id\":14476727,\"number\":10673,\"title\":\"Add ability to specify how a class is converted to Arel predicate when passed to where\",\"user\":{\"login\":\"sgrif\",\"id\":1529387,\"avatar_url\":\"https://secure.gravatar.com/avatar/0f674817f8c6e149518f0a4b4ad3d560?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"0f674817f8c6e149518f0a4b4ad3d560\",\"url\":\"https://api.github.com/users/sgrif\",\"html_url\":\"https://github.com/sgrif\",\"followers_url\":\"https://api.github.com/users/sgrif/followers\",\"following_url\":\"https://api.github.com/users/sgrif/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/sgrif/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/sgrif/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/sgrif/subscriptions\",\"organizations_url\":\"https://api.github.com/users/sgrif/orgs\",\"repos_url\":\"https://api.github.com/users/sgrif/repos\",\"events_url\":\"https://api.github.com/users/sgrif/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/sgrif/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":13,\"created_at\":\"2013-05-18T00:27:00Z\",\"updated_at\":\"2013-05-20T17:22:34Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10673\",\"diff_url\":\"https://github.com/rails/rails/pull/10673.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10673.patch\"},\"body\":\"This adds the ability for rails apps or gems to have granular control\\r\\nover how a domain object is converted to sql. One simple use case would\\r\\nbe to add support for Regexp. Another simple case would be something\\r\\nlike the following:\\r\\n\\r\\n class DateRange < Struct.new(:start, :end)\\r\\n def include?(date)\\r\\n (start..end).cover?(date)\\r\\n end\\r\\n end\\r\\n\\r\\n class DateRangePredicate\\r\\n def call(attribute, range)\\r\\n attribute.in(range.start..range.end)\\r\\n end\\r\\n end\\r\\n\\r\\n ActiveRecord::PredicateBuilder.register_handler(DateRange, DateRangePredicate.new)\\r\\n\\r\\nMore complex cases might include taking a currency object and converting\\r\\nit from EUR to USD before performing the query.\\r\\n\\r\\nBy moving the existing handlers to this format, we were also able to\\r\\nnicely refactor a rather nasty method in PredicateBuilder.\\r\\n\\r\\nThis would also make it fairly simple to add make it possible to define special handling for individual columns (e.g. for things like database level encryption, which currently requires massive hacking to perform). That's probably suited for a separate pull request, though.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10671\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10671/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10671/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10671/events\",\"html_url\":\"https://github.com/rails/rails/issues/10671\",\"id\":14473104,\"number\":10671,\"title\":\"mysql migrations break when text columns are non-nullable\",\"user\":{\"login\":\"michaelglass\",\"id\":60136,\"avatar_url\":\"https://secure.gravatar.com/avatar/1c33737c12ccc6d022ddeff6275ebdc7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"1c33737c12ccc6d022ddeff6275ebdc7\",\"url\":\"https://api.github.com/users/michaelglass\",\"html_url\":\"https://github.com/michaelglass\",\"followers_url\":\"https://api.github.com/users/michaelglass/followers\",\"following_url\":\"https://api.github.com/users/michaelglass/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/michaelglass/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/michaelglass/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/michaelglass/subscriptions\",\"organizations_url\":\"https://api.github.com/users/michaelglass/orgs\",\"repos_url\":\"https://api.github.com/users/michaelglass/repos\",\"events_url\":\"https://api.github.com/users/michaelglass/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/michaelglass/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-17T21:52:40Z\",\"updated_at\":\"2013-05-20T17:22:39Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10671\",\"diff_url\":\"https://github.com/rails/rails/pull/10671.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10671.patch\"},\"body\":\"mysql doesn't allow default for text columns,but effectively has a default of \\\"\\\" when null is not allowed. That default breaks any migration changes.\\r\\n\\r\\nI'm not sure how to test this in the context of existing rails test.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10670\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10670/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10670/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10670/events\",\"html_url\":\"https://github.com/rails/rails/issues/10670\",\"id\":14469198,\"number\":10670,\"title\":\"Change find_or_create to do INSERT before SELECT\",\"user\":{\"login\":\"jcoglan\",\"id\":9265,\"avatar_url\":\"https://secure.gravatar.com/avatar/81eec7f220df03d5b8cadf106a2c14c5?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"81eec7f220df03d5b8cadf106a2c14c5\",\"url\":\"https://api.github.com/users/jcoglan\",\"html_url\":\"https://github.com/jcoglan\",\"followers_url\":\"https://api.github.com/users/jcoglan/followers\",\"following_url\":\"https://api.github.com/users/jcoglan/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jcoglan/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jcoglan/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jcoglan/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jcoglan/orgs\",\"repos_url\":\"https://api.github.com/users/jcoglan/repos\",\"events_url\":\"https://api.github.com/users/jcoglan/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jcoglan/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-17T20:04:04Z\",\"updated_at\":\"2013-05-17T22:56:06Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10670\",\"diff_url\":\"https://github.com/rails/rails/pull/10670.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10670.patch\"},\"body\":\"This makes find_or_create() safe to use with concurrent requests by\\r\\nrelying on unique indexes to raise errors if the INSERT fails. By doing\\r\\nthe SELECT first, we leave this method open to the same race conditions\\r\\nthat affect uniqueness validation.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10669\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10669/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10669/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10669/events\",\"html_url\":\"https://github.com/rails/rails/issues/10669\",\"id\":14464110,\"number\":10669,\"title\":\"Merging scopes with joins clauses written as text fails\",\"user\":{\"login\":\"iwiznia\",\"id\":521248,\"avatar_url\":\"https://secure.gravatar.com/avatar/f81560e8e8743d0df6a467b88df31bbc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f81560e8e8743d0df6a467b88df31bbc\",\"url\":\"https://api.github.com/users/iwiznia\",\"html_url\":\"https://github.com/iwiznia\",\"followers_url\":\"https://api.github.com/users/iwiznia/followers\",\"following_url\":\"https://api.github.com/users/iwiznia/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/iwiznia/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/iwiznia/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/iwiznia/subscriptions\",\"organizations_url\":\"https://api.github.com/users/iwiznia/orgs\",\"repos_url\":\"https://api.github.com/users/iwiznia/repos\",\"events_url\":\"https://api.github.com/users/iwiznia/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/iwiznia/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T17:56:55Z\",\"updated_at\":\"2013-05-17T18:03:25Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"This is related to the issue: #3002 and the pull requests: #5494, #10164, #10303.\\r\\nI'm testing this in master branch.\\r\\n\\r\\nI have a failing test here: https://github.com/iwiznia/rails/commit/d12343fe4fd65b94f48bb0df5a99177cd8d6ba20\\r\\nI don't know if I need to open a pull request just with a failing test or just report it here.\\r\\n\\r\\nBasically, this works:\\r\\n```ruby\\r\\nspecial_comments_with_ratings = SpecialComment.joins(:ratings)\\r\\nposts_with_special_comments_with_ratings = Post.joins(:special_comments).merge(special_comments_with_ratings)\\r\\n```\\r\\nAnd this fails with \\\"ActiveRecord::ConfigurationError: Association named 'INNER JOIN \\\"ratings\\\" ON \\\"comments\\\".id = \\\"ratings\\\".comment_id' was not found on Post; perhaps you misspelled it?\\\":\\r\\n```ruby\\r\\nspecial_comments_with_ratings = SpecialComment.joins(\\\"INNER JOIN \#{Rating.quoted_table_name} ON \#{SpecialComment.quoted_table_name}.id = \#{Rating.quoted_table_name}.comment_id\\\")\\r\\nposts_with_special_comments_with_ratings = Post.joins(:special_comments).merge(special_comments_with_ratings)\\r\\n```\\r\\n\\r\\nIt seems that this was working and got broken somewhere (I'm basing this on this comment https://github.com/rails/rails/pull/5494#issuecomment-5262803 that states that merging a join using :symbol didn't work but it did work when sending a string, now the opposite is true).\\r\\n\\r\\n(I don't know how to fix the issue, so if anyone can point me in the right direction maybe I can give it a try...\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10668\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10668/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10668/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10668/events\",\"html_url\":\"https://github.com/rails/rails/issues/10668\",\"id\":14462901,\"number\":10668,\"title\":\"Bad encoding when presenting the lines of a posted text file\",\"user\":{\"login\":\"pedrogaspar\",\"id\":471214,\"avatar_url\":\"https://secure.gravatar.com/avatar/61631dfeacc216221bd64f3cc0012a9f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"61631dfeacc216221bd64f3cc0012a9f\",\"url\":\"https://api.github.com/users/pedrogaspar\",\"html_url\":\"https://github.com/pedrogaspar\",\"followers_url\":\"https://api.github.com/users/pedrogaspar/followers\",\"following_url\":\"https://api.github.com/users/pedrogaspar/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/pedrogaspar/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/pedrogaspar/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/pedrogaspar/subscriptions\",\"organizations_url\":\"https://api.github.com/users/pedrogaspar/orgs\",\"repos_url\":\"https://api.github.com/users/pedrogaspar/repos\",\"events_url\":\"https://api.github.com/users/pedrogaspar/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/pedrogaspar/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T17:25:10Z\",\"updated_at\":\"2013-05-17T17:25:10Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Having a form that submits a file, when reading with:\\r\\n\\r\\n file = params[:file]\\r\\n @file = file.read\\r\\n\\r\\nand presenting in a view\\r\\n\\r\\n <%= @file %>\\r\\n\\r\\nShows the error: _incompatible character encodings: ASCII-8BIT and UTF-8_\\r\\n\\r\\nBut if we read with\\r\\n\\r\\n file = File.read(params[:file].path)\\r\\n\\r\\nIt works.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10667\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10667/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10667/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10667/events\",\"html_url\":\"https://github.com/rails/rails/issues/10667\",\"id\":14462059,\"number\":10667,\"title\":\"Eliminate minitest warnings\",\"user\":{\"login\":\"rubys\",\"id\":4815,\"avatar_url\":\"https://secure.gravatar.com/avatar/e2dda5e47fccc5ff0daa87debf48162b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"e2dda5e47fccc5ff0daa87debf48162b\",\"url\":\"https://api.github.com/users/rubys\",\"html_url\":\"https://github.com/rubys\",\"followers_url\":\"https://api.github.com/users/rubys/followers\",\"following_url\":\"https://api.github.com/users/rubys/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/rubys/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/rubys/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/rubys/subscriptions\",\"organizations_url\":\"https://api.github.com/users/rubys/orgs\",\"repos_url\":\"https://api.github.com/users/rubys/repos\",\"events_url\":\"https://api.github.com/users/rubys/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/rubys/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T17:04:44Z\",\"updated_at\":\"2013-05-17T17:04:44Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10667\",\"diff_url\":\"https://github.com/rails/rails/pull/10667.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10667.patch\"},\"body\":\"See https://github.com/seattlerb/minitest/commit/9a57c520ceac76abfe6105866f8548a94eb357b6#L15R8\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10666\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10666/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10666/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10666/events\",\"html_url\":\"https://github.com/rails/rails/issues/10666\",\"id\":14451788,\"number\":10666,\"title\":\"make \\\"rails dbconsole\\\" work with activerecord-postgis-adapter\",\"user\":{\"login\":\"YanhaoYang\",\"id\":1280056,\"avatar_url\":\"https://secure.gravatar.com/avatar/b72e52690b1e7225824a48afa3813e9a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"b72e52690b1e7225824a48afa3813e9a\",\"url\":\"https://api.github.com/users/YanhaoYang\",\"html_url\":\"https://github.com/YanhaoYang\",\"followers_url\":\"https://api.github.com/users/YanhaoYang/followers\",\"following_url\":\"https://api.github.com/users/YanhaoYang/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/YanhaoYang/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/YanhaoYang/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/YanhaoYang/subscriptions\",\"organizations_url\":\"https://api.github.com/users/YanhaoYang/orgs\",\"repos_url\":\"https://api.github.com/users/YanhaoYang/repos\",\"events_url\":\"https://api.github.com/users/YanhaoYang/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/YanhaoYang/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T13:19:34Z\",\"updated_at\":\"2013-05-17T13:19:34Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10666\",\"diff_url\":\"https://github.com/rails/rails/pull/10666.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10666.patch\"},\"body\":\"It's a minor change. I only added \\\"postgis\\\" to the \\\"when\\\" clause to make it recognize \\\"postgis\\\".\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10664\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10664/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10664/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10664/events\",\"html_url\":\"https://github.com/rails/rails/issues/10664\",\"id\":14446826,\"number\":10664,\"title\":\"Fix doc in Postgres database creation\",\"user\":{\"login\":\"aderyabin\",\"id\":88676,\"avatar_url\":\"https://secure.gravatar.com/avatar/cebfabb19814410151c8375b798643df?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"cebfabb19814410151c8375b798643df\",\"url\":\"https://api.github.com/users/aderyabin\",\"html_url\":\"https://github.com/aderyabin\",\"followers_url\":\"https://api.github.com/users/aderyabin/followers\",\"following_url\":\"https://api.github.com/users/aderyabin/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/aderyabin/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/aderyabin/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/aderyabin/subscriptions\",\"organizations_url\":\"https://api.github.com/users/aderyabin/orgs\",\"repos_url\":\"https://api.github.com/users/aderyabin/repos\",\"events_url\":\"https://api.github.com/users/aderyabin/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/aderyabin/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T10:47:00Z\",\"updated_at\":\"2013-05-17T10:47:00Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10664\",\"diff_url\":\"https://github.com/rails/rails/pull/10664.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10664.patch\"},\"body\":\"By default encoding for new Postgres database is [utf8](https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L57) and it has [assert](https://github.com/aderyabin/rails/blob/54a2ec13026b14da70f1894d87a4fe04a63e5828/activerecord/test/cases/adapters/postgresql/active_schema_test.rb#L17) but not pointed in doc.\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10662\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10662/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10662/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10662/events\",\"html_url\":\"https://github.com/rails/rails/issues/10662\",\"id\":14442172,\"number\":10662,\"title\":\"Refactor AR's validations_test.rb\",\"user\":{\"login\":\"tkhr\",\"id\":1095842,\"avatar_url\":\"https://secure.gravatar.com/avatar/653400f191791e1bcb454c05bfc14ed0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"653400f191791e1bcb454c05bfc14ed0\",\"url\":\"https://api.github.com/users/tkhr\",\"html_url\":\"https://github.com/tkhr\",\"followers_url\":\"https://api.github.com/users/tkhr/followers\",\"following_url\":\"https://api.github.com/users/tkhr/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/tkhr/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/tkhr/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/tkhr/subscriptions\",\"organizations_url\":\"https://api.github.com/users/tkhr/orgs\",\"repos_url\":\"https://api.github.com/users/tkhr/repos\",\"events_url\":\"https://api.github.com/users/tkhr/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/tkhr/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-17T08:19:29Z\",\"updated_at\":\"2013-05-20T14:41:00Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10662\",\"diff_url\":\"https://github.com/rails/rails/pull/10662.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10662.patch\"},\"body\":\"Some refactoring, tell me anything if u thought something about this PR :D \"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10660\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10660/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10660/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10660/events\",\"html_url\":\"https://github.com/rails/rails/issues/10660\",\"id\":14438855,\"number\":10660,\"title\":\"rake db:test:prepare not behaving as intended (or deprecated?)\",\"user\":{\"login\":\"prusswan\",\"id\":671970,\"avatar_url\":\"https://secure.gravatar.com/avatar/ee662a0ddb22652f614486f529bb06ec?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"ee662a0ddb22652f614486f529bb06ec\",\"url\":\"https://api.github.com/users/prusswan\",\"html_url\":\"https://github.com/prusswan\",\"followers_url\":\"https://api.github.com/users/prusswan/followers\",\"following_url\":\"https://api.github.com/users/prusswan/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/prusswan/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/prusswan/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/prusswan/subscriptions\",\"organizations_url\":\"https://api.github.com/users/prusswan/orgs\",\"repos_url\":\"https://api.github.com/users/prusswan/repos\",\"events_url\":\"https://api.github.com/users/prusswan/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/prusswan/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T05:53:29Z\",\"updated_at\":\"2013-05-20T07:06:26Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Steps to reproduce:\\r\\n\\r\\n1. rake db:drop\\r\\n2. rake db:create\\r\\n3. rake db:migrate\\r\\n4. rake db:test:prepare\\r\\n5. rspec spec \\r\\n\\r\\nThis results in a bunch of failures about missing tables, which indicates that step 4 had no effect.\\r\\n\\r\\nProblem does not occur if `rake test:prepare` is used instead. \\r\\nProblem also does not occur with `rake spec` which seems to negate the necessity for any `test:prepare` statement.\\r\\n\\r\\nReference project: https://github.com/prusswan/mstar-rails/tree/rails4 (updated to use rails 4 defaults) \\r\\n\\r\\n\\r\\nUpdate:\\r\\n\\r\\nI just saw the related https://github.com/rails/rails/issues/10563, but since rspec-rails 2.13.1 is already in use, the issue that remains is still, to clarify the status of `rake db:test:prepare` \\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10658\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10658/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10658/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10658/events\",\"html_url\":\"https://github.com/rails/rails/issues/10658\",\"id\":14434364,\"number\":10658,\"title\":\"Scopes defined on Abstract ActiveRecord classes are missing table names when called from subclasses\",\"user\":{\"login\":\"lsylvester\",\"id\":191128,\"avatar_url\":\"https://secure.gravatar.com/avatar/91e8840fc25244e0303c6c6cab989537?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"91e8840fc25244e0303c6c6cab989537\",\"url\":\"https://api.github.com/users/lsylvester\",\"html_url\":\"https://github.com/lsylvester\",\"followers_url\":\"https://api.github.com/users/lsylvester/followers\",\"following_url\":\"https://api.github.com/users/lsylvester/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/lsylvester/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/lsylvester/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/lsylvester/subscriptions\",\"organizations_url\":\"https://api.github.com/users/lsylvester/orgs\",\"repos_url\":\"https://api.github.com/users/lsylvester/repos\",\"events_url\":\"https://api.github.com/users/lsylvester/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/lsylvester/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":6,\"created_at\":\"2013-05-17T01:24:05Z\",\"updated_at\":\"2013-05-18T14:27:42Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"If a scope is defined on an abstract active record class, when it is called by one of its subclasses the sql generated is missing a table name.\\r\\n\\r\\n```ruby \\r\\nclass AbstractCompany < ActiveRecord::Base\\r\\n self.abstract_class = true\\r\\n \\r\\n scope :abstract_company_scope, ->{ order('id') }\\r\\nend\\r\\n\\r\\nclass Company < AbstractCompany\\r\\nend\\r\\n\\r\\nCompany.abstract_company_scope #=> ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: : SELECT \\\"\\\".* FROM \\\"\\\" ORDER BY id LIMIT 1\\r\\n```\\r\\n\\r\\nTest has been added at lsylvester/rails@c64023bc9fd7dfe10f564fedbd7299240bd5da15\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10655\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10655/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10655/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10655/events\",\"html_url\":\"https://github.com/rails/rails/issues/10655\",\"id\":14428834,\"number\":10655,\"title\":\"ActiveRecord messing with Arel::Nodes::NamedFunctions on where\",\"user\":{\"login\":\"sobrinho\",\"id\":26460,\"avatar_url\":\"https://secure.gravatar.com/avatar/c2dc9c02ce7a041285725a4fc9e5f6d2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"c2dc9c02ce7a041285725a4fc9e5f6d2\",\"url\":\"https://api.github.com/users/sobrinho\",\"html_url\":\"https://github.com/sobrinho\",\"followers_url\":\"https://api.github.com/users/sobrinho/followers\",\"following_url\":\"https://api.github.com/users/sobrinho/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/sobrinho/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/sobrinho/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/sobrinho/subscriptions\",\"organizations_url\":\"https://api.github.com/users/sobrinho/orgs\",\"repos_url\":\"https://api.github.com/users/sobrinho/repos\",\"events_url\":\"https://api.github.com/users/sobrinho/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/sobrinho/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-16T21:57:27Z\",\"updated_at\":\"2013-05-18T03:45:01Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Hi guys,\\r\\n\\r\\nI'm not sure why, I'm still not familiar with ActiveRecord and Arel internals :sob:\\r\\n\\r\\nGiven that model:\\r\\n\\r\\n``` ruby\\r\\nclass Transaction < ActiveRecord::Base\\r\\n def self.year(year)\\r\\n where(Arel::Nodes::NamedFunction.new('date_part', ['year', arel_table[:due_date]]).eq(year))\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nIt works as expect using the scope:\\r\\n\\r\\n``` ruby\\r\\nTransaction.month(5).to_sql\\r\\n#=> \\\"SELECT \\\\\\\"transactions\\\\\\\".* FROM \\\\\\\"transactions\\\\\\\" WHERE date_part('month', \\\\\\\"transactions\\\\\\\".\\\\\\\"due_date\\\\\\\") = 5\\\"\\r\\n```\\r\\n\\r\\nBut it prepends a strange argument to the named function when combined with any other where clauses:\\r\\n\\r\\n``` ruby\\r\\nTransaction.where(:id => 1).month(5).to_sql\\r\\n#=> \\\"SELECT \\\\\\\"transactions\\\\\\\".* FROM \\\\\\\"transactions\\\\\\\" WHERE \\\\\\\"transactions\\\\\\\".\\\\\\\"id\\\\\\\" = 1 AND date_part(0, \\\\\\\"transactions\\\\\\\".\\\\\\\"due_date\\\\\\\") = 5\\\"\\r\\n```\\r\\n\\r\\nNote the 0 as first argument for the date_part function.\\r\\n\\r\\nBut it not happens when the where is applied latter:\\r\\n\\r\\n``` ruby\\r\\nTransaction.month(5).where(:id => 1).to_sql\\r\\n#=> \\\"SELECT \\\\\\\"transactions\\\\\\\".* FROM \\\\\\\"transactions\\\\\\\" WHERE date_part('month', \\\\\\\"transactions\\\\\\\".\\\\\\\"due_date\\\\\\\") = 5 AND \\\\\\\"transactions\\\\\\\".\\\\\\\"id\\\\\\\" = 1\\\"\\r\\n```\\r\\n\\r\\nI will pay some beers for who fix this :beers: \"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10653\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10653/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10653/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10653/events\",\"html_url\":\"https://github.com/rails/rails/issues/10653\",\"id\":14427413,\"number\":10653,\"title\":\"Allows passing arguments to content_tag block.\",\"user\":{\"login\":\"eloyesp\",\"id\":173797,\"avatar_url\":\"https://secure.gravatar.com/avatar/224f5b1b5ee448ec8152236ede91908c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"224f5b1b5ee448ec8152236ede91908c\",\"url\":\"https://api.github.com/users/eloyesp\",\"html_url\":\"https://github.com/eloyesp\",\"followers_url\":\"https://api.github.com/users/eloyesp/followers\",\"following_url\":\"https://api.github.com/users/eloyesp/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/eloyesp/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/eloyesp/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/eloyesp/subscriptions\",\"organizations_url\":\"https://api.github.com/users/eloyesp/orgs\",\"repos_url\":\"https://api.github.com/users/eloyesp/repos\",\"events_url\":\"https://api.github.com/users/eloyesp/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/eloyesp/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":5,\"created_at\":\"2013-05-16T21:20:27Z\",\"updated_at\":\"2013-05-16T22:12:32Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10653\",\"diff_url\":\"https://github.com/rails/rails/pull/10653.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10653.patch\"},\"body\":\"This will ease the use on plugins like tabs_on_rails. It may also allow to use\\nthis method more, within methods like form for.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10651\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10651/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10651/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10651/events\",\"html_url\":\"https://github.com/rails/rails/issues/10651\",\"id\":14417981,\"number\":10651,\"title\":\"Trailing slashes\",\"user\":{\"login\":\"shlima\",\"id\":2356771,\"avatar_url\":\"https://secure.gravatar.com/avatar/bf2bcff01eaa283b7e51e3c7706b84e1?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"bf2bcff01eaa283b7e51e3c7706b84e1\",\"url\":\"https://api.github.com/users/shlima\",\"html_url\":\"https://github.com/shlima\",\"followers_url\":\"https://api.github.com/users/shlima/followers\",\"following_url\":\"https://api.github.com/users/shlima/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/shlima/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/shlima/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/shlima/subscriptions\",\"organizations_url\":\"https://api.github.com/users/shlima/orgs\",\"repos_url\":\"https://api.github.com/users/shlima/repos\",\"events_url\":\"https://api.github.com/users/shlima/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/shlima/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/needs+feedback\",\"name\":\"needs feedback\",\"color\":\"ededed\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-16T17:47:15Z\",\"updated_at\":\"2013-05-19T19:44:57Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Hello.\\r\\nSeems to be trailing slashes do not work in Rails 4?\\r\\nThanks for your job teem!\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10647\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10647/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10647/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10647/events\",\"html_url\":\"https://github.com/rails/rails/issues/10647\",\"id\":14414245,\"number\":10647,\"title\":\"Engines guide doesn't mention requiring decorators\",\"user\":{\"login\":\"mikecmpbll\",\"id\":1962801,\"avatar_url\":\"https://secure.gravatar.com/avatar/0ae26dc39d2a7b129d1a3f49eb4fe9e0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"0ae26dc39d2a7b129d1a3f49eb4fe9e0\",\"url\":\"https://api.github.com/users/mikecmpbll\",\"html_url\":\"https://github.com/mikecmpbll\",\"followers_url\":\"https://api.github.com/users/mikecmpbll/followers\",\"following_url\":\"https://api.github.com/users/mikecmpbll/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/mikecmpbll/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/mikecmpbll/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/mikecmpbll/subscriptions\",\"organizations_url\":\"https://api.github.com/users/mikecmpbll/orgs\",\"repos_url\":\"https://api.github.com/users/mikecmpbll/repos\",\"events_url\":\"https://api.github.com/users/mikecmpbll/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/mikecmpbll/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":4,\"created_at\":\"2013-05-16T16:21:53Z\",\"updated_at\":\"2013-05-16T17:18:14Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"The [Engines guide](http://edgeguides.rubyonrails.org/engines.html#overriding-models-and-controllers) goes into a bit of detail about the decorator pattern with `class_eval`, but it makes no mention of the fact you have to load these decorators in some how, I eventually found the following code from the `radar/forem` repo:\\r\\n\\r\\n # lib/blorgh/engine.rb\\r\\n module Blorgh\\r\\n class Engine < ::Rails::Engine\\r\\n isolate_namespace Blorgh\\r\\n\\r\\n config.to_prepare do\\r\\n Dir.glob(Rails.root + \\\"app/decorators/**/*_decorator*.rb\\\").each do |c|\\r\\n require_dependency(c)\\r\\n end\\r\\n end\\r\\n end\\r\\n end\\r\\n\\r\\nThis seems to load decorators from the app which mounts your engine, so you can override the engine. Either I'm missing something or this should probably be mentioned as necessary when using decorators as suggested in the guides?\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10643\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10643/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10643/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10643/events\",\"html_url\":\"https://github.com/rails/rails/issues/10643\",\"id\":14407895,\"number\":10643,\"title\":\"[Rails 4] Association Unscoped does not work\",\"user\":{\"login\":\"achiinto\",\"id\":469412,\"avatar_url\":\"https://secure.gravatar.com/avatar/d40b80c880aaaad2f05d991f9fe597c6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"d40b80c880aaaad2f05d991f9fe597c6\",\"url\":\"https://api.github.com/users/achiinto\",\"html_url\":\"https://github.com/achiinto\",\"followers_url\":\"https://api.github.com/users/achiinto/followers\",\"following_url\":\"https://api.github.com/users/achiinto/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/achiinto/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/achiinto/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/achiinto/subscriptions\",\"organizations_url\":\"https://api.github.com/users/achiinto/orgs\",\"repos_url\":\"https://api.github.com/users/achiinto/repos\",\"events_url\":\"https://api.github.com/users/achiinto/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/achiinto/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/regression\",\"name\":\"regression\",\"color\":\"e10c02\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":{\"url\":\"https://api.github.com/repos/rails/rails/milestones/9\",\"labels_url\":\"https://api.github.com/repos/rails/rails/milestones/9/labels\",\"id\":44893,\"number\":9,\"title\":\"4.0.0\",\"description\":\"Changes that break 3.x API.\",\"creator\":{\"login\":\"jeremy\",\"id\":199,\"avatar_url\":\"https://secure.gravatar.com/avatar/24d2f8804e6bb4b7ea6bd11e0a586470?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"24d2f8804e6bb4b7ea6bd11e0a586470\",\"url\":\"https://api.github.com/users/jeremy\",\"html_url\":\"https://github.com/jeremy\",\"followers_url\":\"https://api.github.com/users/jeremy/followers\",\"following_url\":\"https://api.github.com/users/jeremy/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jeremy/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jeremy/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jeremy/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jeremy/orgs\",\"repos_url\":\"https://api.github.com/users/jeremy/repos\",\"events_url\":\"https://api.github.com/users/jeremy/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jeremy/received_events\",\"type\":\"User\"},\"open_issues\":3,\"closed_issues\":89,\"state\":\"open\",\"created_at\":\"2011-10-09T02:53:46Z\",\"updated_at\":\"2013-05-16T20:08:49Z\",\"due_on\":null},\"comments\":2,\"created_at\":\"2013-05-16T14:17:54Z\",\"updated_at\":\"2013-05-17T13:56:46Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I am not sure if this is a bug. Back in Rails 3. I believe I could do this...\\r\\n\\r\\n```ruby\\r\\nbelongs_to :creator, scope: unscoped, class_name: \\\"User\\\"\\r\\n```\\r\\n\\r\\nBut this in Rails 4 does not work...\\r\\n\\r\\n```ruby\\r\\nbelongs_to :creator, -> { unscoped }, class_name: \\\"User\\\"\\r\\n```\\r\\n\\r\\nAnd I had to do it this way...\\r\\n\\r\\n```ruby\\r\\nbelongs_to :creator, -> { where is_destroyed: [true, false] }, class_name: \\\"User\\\"\\r\\n```\\r\\n\\r\\nBut this is still working...\\r\\n\\r\\n```irb\\r\\nUser.where(is_destroyed: false).unscoped.find 2\\r\\n# User 2 is_destroyed: true\\r\\n```\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10642\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10642/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10642/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10642/events\",\"html_url\":\"https://github.com/rails/rails/issues/10642\",\"id\":14406297,\"number\":10642,\"title\":\"Show real LoadError on helpers require\",\"user\":{\"login\":\"LTe\",\"id\":160962,\"avatar_url\":\"https://secure.gravatar.com/avatar/98f11c73a95318bbf85e419c1727434d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"98f11c73a95318bbf85e419c1727434d\",\"url\":\"https://api.github.com/users/LTe\",\"html_url\":\"https://github.com/LTe\",\"followers_url\":\"https://api.github.com/users/LTe/followers\",\"following_url\":\"https://api.github.com/users/LTe/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/LTe/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/LTe/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/LTe/subscriptions\",\"organizations_url\":\"https://api.github.com/users/LTe/orgs\",\"repos_url\":\"https://api.github.com/users/LTe/repos\",\"events_url\":\"https://api.github.com/users/LTe/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/LTe/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-16T13:44:28Z\",\"updated_at\":\"2013-05-17T07:05:08Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10642\",\"diff_url\":\"https://github.com/rails/rails/pull/10642.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10642.patch\"},\"body\":\"When helper try to require missing file rails will throw exception about\\r\\nmissing helper.\\r\\n\\r\\n```ruby\\r\\n# app/helpers/my_helper.rb\\r\\nrequire 'missing'\\r\\n\\r\\nmodule MyHelper\\r\\nend\\r\\n```\\r\\n\\r\\nAnd when we try do load helper\\r\\n\\r\\n```ruby\\r\\nclass ApplicationController\\r\\n helper :my\\r\\nend\\r\\n```\\r\\n\\r\\nRails will throw exception. This is wrong because there is a helper file.\\r\\n\\r\\n```\\r\\nMissing helper file helpers/my_helper.rb\\r\\n```\\r\\n\\r\\nNow when helper try to require non-existed file rails will throw proper exception.\\r\\n\\r\\n```\\r\\nNo such file to load -- missing\\r\\n```\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10635\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10635/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10635/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10635/events\",\"html_url\":\"https://github.com/rails/rails/issues/10635\",\"id\":14360294,\"number\":10635,\"title\":\"Use `Base.strict_decode64` instead of `Base.decode64` \",\"user\":{\"login\":\"vipulnsward\",\"id\":567626,\"avatar_url\":\"https://secure.gravatar.com/avatar/f459742822cf8347e83d5c445378a934?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f459742822cf8347e83d5c445378a934\",\"url\":\"https://api.github.com/users/vipulnsward\",\"html_url\":\"https://github.com/vipulnsward\",\"followers_url\":\"https://api.github.com/users/vipulnsward/followers\",\"following_url\":\"https://api.github.com/users/vipulnsward/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/vipulnsward/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/vipulnsward/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/vipulnsward/subscriptions\",\"organizations_url\":\"https://api.github.com/users/vipulnsward/orgs\",\"repos_url\":\"https://api.github.com/users/vipulnsward/repos\",\"events_url\":\"https://api.github.com/users/vipulnsward/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/vipulnsward/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-15T14:13:13Z\",\"updated_at\":\"2013-05-15T20:51:34Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10635\",\"diff_url\":\"https://github.com/rails/rails/pull/10635.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10635.patch\"},\"body\":\"Use `Base.strict_decode64` instead of `Base.decode64` just as we do in encoding;\\r\\n\\r\\nAlso change `map` to `map!` on new array, to map inplace and reduce extra object allocation\\r\\n\"}]", :headers=>{"Server"=>"GitHub.com", "Date"=>"Mon, 20 May 2013 20:30:29 GMT", "Content-Type"=>"application/json; charset=utf-8", "Connection"=>"keep-alive", "Status"=>"200 OK", "X-RateLimit-Limit"=>"60", "X-RateLimit-Remaining"=>"56", "Vary"=>"Accept, Accept-Encoding", "Cache-Control"=>"public, max-age=60, s-maxage=60", "Last-Modified"=>"Mon, 20 May 2013 20:29:58 GMT", "ETag"=>"\"16e479b41ab6c4e83e7c772a9f805491\"", "X-GitHub-Media-Type"=>"github.beta; param=3.raw; format=json", "Link"=>"<https://api.github.com/repositories/8514/issues?page=2>; rel=\"next\", <https://api.github.com/repositories/8514/issues?page=18>; rel=\"last\"", "X-Content-Type-Options"=>"nosniff", "Content-Length"=>"73334", "Access-Control-Allow-Credentials"=>"true", "Access-Control-Expose-Headers"=>"Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes", "Access-Control-Allow-Origin"=>"*"}, :status=>200, :remote_ip=>"207.97.227.243"}
20
+ {:body=>"[{\"url\":\"https://api.github.com/repos/rails/rails/issues/10694\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10694/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10694/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10694/events\",\"html_url\":\"https://github.com/rails/rails/issues/10694\",\"id\":14534225,\"number\":10694,\"title\":\"Fix regression in has_secure_password.\",\"user\":{\"login\":\"steveklabnik\",\"id\":27786,\"avatar_url\":\"https://secure.gravatar.com/avatar/233c279c012ebac792aaa805f966cbc7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"233c279c012ebac792aaa805f966cbc7\",\"url\":\"https://api.github.com/users/steveklabnik\",\"html_url\":\"https://github.com/steveklabnik\",\"followers_url\":\"https://api.github.com/users/steveklabnik/followers\",\"following_url\":\"https://api.github.com/users/steveklabnik/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/steveklabnik/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/steveklabnik/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/steveklabnik/subscriptions\",\"organizations_url\":\"https://api.github.com/users/steveklabnik/orgs\",\"repos_url\":\"https://api.github.com/users/steveklabnik/repos\",\"events_url\":\"https://api.github.com/users/steveklabnik/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/steveklabnik/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":4,\"created_at\":\"2013-05-20T19:14:39Z\",\"updated_at\":\"2013-05-20T19:42:52Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10694\",\"diff_url\":\"https://github.com/rails/rails/pull/10694.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10694.patch\"},\"body\":\"If the confirmation was blank, but the password wasn't, it would still save.\\r\\n\\r\\nSent via a PR for feedback. Password stuff is tricky.\\r\\n\\r\\n/cc @josevalim, @senny\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10693\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10693/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10693/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10693/events\",\"html_url\":\"https://github.com/rails/rails/issues/10693\",\"id\":14514513,\"number\":10693,\"title\":\"ActiveRecord occasionally fails to assign associations when non-default foreign_key used\",\"user\":{\"login\":\"slivu\",\"id\":1230455,\"avatar_url\":\"https://secure.gravatar.com/avatar/431eccb8e2c45e43221e5aa52f304857?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"431eccb8e2c45e43221e5aa52f304857\",\"url\":\"https://api.github.com/users/slivu\",\"html_url\":\"https://github.com/slivu\",\"followers_url\":\"https://api.github.com/users/slivu/followers\",\"following_url\":\"https://api.github.com/users/slivu/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/slivu/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/slivu/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/slivu/subscriptions\",\"organizations_url\":\"https://api.github.com/users/slivu/orgs\",\"repos_url\":\"https://api.github.com/users/slivu/repos\",\"events_url\":\"https://api.github.com/users/slivu/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/slivu/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-20T10:28:44Z\",\"updated_at\":\"2013-05-20T10:28:44Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Somehow it using correct key only once...\\r\\n\\r\\n```\\r\\nSQLite3::SQLException: no such column: cities.code:\\r\\nUPDATE \\\"cities\\\" SET \\\"state_code\\\" = NULL WHERE\\r\\n\\\"cities\\\".\\\"state_code\\\" = 'W' AND\\r\\n\\\"cities\\\".\\\"code\\\" IS NULL\\r\\n```\\r\\n\\r\\nNot sure why it is attaching `\\\"cities\\\".\\\"code\\\" IS NULL`\\r\\n\\r\\nIt happens only when state already has some cities attached and\\r\\ni'm trying to set new cities using `#cities=`\\r\\n\\r\\nHere is how to repeat:\\r\\n\\r\\n```ruby\\r\\nrequire 'logger'\\r\\nrequire 'active_record'\\r\\n\\r\\nActiveRecord::Base.logger = Logger.new(STDERR)\\r\\nActiveRecord::Base.establish_connection(\\r\\n adapter: \\\"sqlite3\\\",\\r\\n database: \\\":memory:\\\"\\r\\n)\\r\\n\\r\\nActiveRecord::Schema.define do\\r\\n create_table :states do |table|\\r\\n table.column :name, :string\\r\\n table.column :code, :string\\r\\n end\\r\\n add_index :states, :code\\r\\n\\r\\n create_table :cities do |table|\\r\\n table.column :name, :string\\r\\n table.column :state_code, :string\\r\\n end\\r\\n add_index :cities, :state_code\\r\\nend\\r\\n\\r\\nclass State < ActiveRecord::Base\\r\\n has_many :cities, foreign_key: :state_code, primary_key: :code\\r\\nend\\r\\n\\r\\nclass City < ActiveRecord::Base\\r\\n belongs_to :state, foreign_key: :state_code, primary_key: :code\\r\\nend\\r\\n\\r\\nstates = (1..10).to_a.inject([]) do |s,n|\\r\\n s << State.create(name: n.to_s, code: ('A'..'Z').to_a.sample)\\r\\nend\\r\\n\\r\\ncities = (1..10).to_a.inject([]) do |c,n|\\r\\n c << City.create(name: n.to_s, state: states.sample)\\r\\nend\\r\\n\\r\\nstate, state_cities = states.sample, cities.sample(5)\\r\\nstate_cities_n = state.cities.size\\r\\np state, state_cities\\r\\nbegin\\r\\n state.cities = state_cities\\r\\nrescue => e\\r\\n puts '', '===', e.message, '===', ''\\r\\nend\\r\\nstate.save!\\r\\nstate.reload\\r\\np [state_cities_n, state.cities.size]\\r\\n```\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10690\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10690/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10690/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10690/events\",\"html_url\":\"https://github.com/rails/rails/issues/10690\",\"id\":14506210,\"number\":10690,\"title\":\"Remove attributes_protected_by_default reference\",\"user\":{\"login\":\"robertomiranda\",\"id\":505427,\"avatar_url\":\"https://secure.gravatar.com/avatar/22f7e57c00559503a7da07eb1e93fe88?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"22f7e57c00559503a7da07eb1e93fe88\",\"url\":\"https://api.github.com/users/robertomiranda\",\"html_url\":\"https://github.com/robertomiranda\",\"followers_url\":\"https://api.github.com/users/robertomiranda/followers\",\"following_url\":\"https://api.github.com/users/robertomiranda/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/robertomiranda/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/robertomiranda/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/robertomiranda/subscriptions\",\"organizations_url\":\"https://api.github.com/users/robertomiranda/orgs\",\"repos_url\":\"https://api.github.com/users/robertomiranda/repos\",\"events_url\":\"https://api.github.com/users/robertomiranda/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/robertomiranda/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-20T03:39:49Z\",\"updated_at\":\"2013-05-20T04:02:06Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10690\",\"diff_url\":\"https://github.com/rails/rails/pull/10690.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10690.patch\"},\"body\":\"Remove attributes_protected_by_default reference, since MassAssignmentSecurity was removed from ActiveModel f8c9a4d3e88181\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10689\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10689/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10689/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10689/events\",\"html_url\":\"https://github.com/rails/rails/issues/10689\",\"id\":14505062,\"number\":10689,\"title\":\"#becomes! sets sti_value properly\",\"user\":{\"login\":\"jwaldrip\",\"id\":43164,\"avatar_url\":\"https://secure.gravatar.com/avatar/ca94b06e32f746968f0aec970a702a0c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"ca94b06e32f746968f0aec970a702a0c\",\"url\":\"https://api.github.com/users/jwaldrip\",\"html_url\":\"https://github.com/jwaldrip\",\"followers_url\":\"https://api.github.com/users/jwaldrip/followers\",\"following_url\":\"https://api.github.com/users/jwaldrip/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jwaldrip/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jwaldrip/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jwaldrip/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jwaldrip/orgs\",\"repos_url\":\"https://api.github.com/users/jwaldrip/repos\",\"events_url\":\"https://api.github.com/users/jwaldrip/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jwaldrip/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-20T02:23:44Z\",\"updated_at\":\"2013-05-20T02:23:44Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10689\",\"diff_url\":\"https://github.com/rails/rails/pull/10689.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10689.patch\"},\"body\":\"So the tests and docs weren'y very clear in how this was supposed to work. But wouldn't it make sense that it should work with the following change. If so, I will add the tests and add an entry to the changelog.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10687\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10687/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10687/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10687/events\",\"html_url\":\"https://github.com/rails/rails/issues/10687\",\"id\":14502156,\"number\":10687,\"title\":\"Allow selection of the eRuby implementation for templating.\",\"user\":{\"login\":\"GICodeWarrior\",\"id\":19803,\"avatar_url\":\"https://secure.gravatar.com/avatar/880b0cdaa92232b8914645438b0a1b7c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"880b0cdaa92232b8914645438b0a1b7c\",\"url\":\"https://api.github.com/users/GICodeWarrior\",\"html_url\":\"https://github.com/GICodeWarrior\",\"followers_url\":\"https://api.github.com/users/GICodeWarrior/followers\",\"following_url\":\"https://api.github.com/users/GICodeWarrior/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/GICodeWarrior/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/GICodeWarrior/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/GICodeWarrior/subscriptions\",\"organizations_url\":\"https://api.github.com/users/GICodeWarrior/orgs\",\"repos_url\":\"https://api.github.com/users/GICodeWarrior/repos\",\"events_url\":\"https://api.github.com/users/GICodeWarrior/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/GICodeWarrior/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-19T21:51:22Z\",\"updated_at\":\"2013-05-19T21:51:22Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10687\",\"diff_url\":\"https://github.com/rails/rails/pull/10687.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10687.patch\"},\"body\":\"This presents an avenue for configuration of Erubis enhancers as well. It\\r\\nis an alternative to the following reverted pull request.\\r\\nhttps://github.com/rails/rails/pull/7033\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10686\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10686/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10686/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10686/events\",\"html_url\":\"https://github.com/rails/rails/issues/10686\",\"id\":14498378,\"number\":10686,\"title\":\"Fix error due to Time.at \",\"user\":{\"login\":\"vipulnsward\",\"id\":567626,\"avatar_url\":\"https://secure.gravatar.com/avatar/f459742822cf8347e83d5c445378a934?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f459742822cf8347e83d5c445378a934\",\"url\":\"https://api.github.com/users/vipulnsward\",\"html_url\":\"https://github.com/vipulnsward\",\"followers_url\":\"https://api.github.com/users/vipulnsward/followers\",\"following_url\":\"https://api.github.com/users/vipulnsward/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/vipulnsward/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/vipulnsward/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/vipulnsward/subscriptions\",\"organizations_url\":\"https://api.github.com/users/vipulnsward/orgs\",\"repos_url\":\"https://api.github.com/users/vipulnsward/repos\",\"events_url\":\"https://api.github.com/users/vipulnsward/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/vipulnsward/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-19T16:30:35Z\",\"updated_at\":\"2013-05-19T16:30:35Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10686\",\"diff_url\":\"https://github.com/rails/rails/pull/10686.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10686.patch\"},\"body\":\"In changes to fix https://bugs.ruby-lang.org/issues/8173. `Time.at` now requires an object to implement `to_int`. Aliasing `to_int` to `to_i` fixes this.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10685\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10685/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10685/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10685/events\",\"html_url\":\"https://github.com/rails/rails/issues/10685\",\"id\":14498307,\"number\":10685,\"title\":\"ActiveSupport::Dependencies.const_missing can choose incorrect from_mod\",\"user\":{\"login\":\"trevorturk\",\"id\":402,\"avatar_url\":\"https://secure.gravatar.com/avatar/c0b6fb3807d7d4f255463ed168c75897?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"c0b6fb3807d7d4f255463ed168c75897\",\"url\":\"https://api.github.com/users/trevorturk\",\"html_url\":\"https://github.com/trevorturk\",\"followers_url\":\"https://api.github.com/users/trevorturk/followers\",\"following_url\":\"https://api.github.com/users/trevorturk/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/trevorturk/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/trevorturk/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/trevorturk/subscriptions\",\"organizations_url\":\"https://api.github.com/users/trevorturk/orgs\",\"repos_url\":\"https://api.github.com/users/trevorturk/repos\",\"events_url\":\"https://api.github.com/users/trevorturk/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/trevorturk/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-19T16:24:59Z\",\"updated_at\":\"2013-05-19T17:41:50Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I noticed an issue while using the MailView gem, which someone discovered a few months ago: https://github.com/37signals/mail_view/issues/37\\r\\n\\r\\nI traced the issue down to this commit: https://github.com/rails/rails/commit/2ed325a3e90fc17c2d52a26bd1799b5f4e4bdf88\\r\\n\\r\\nThe issue manifests as an exception \\\"A copy of <name> has been removed from the module tree but is still active!\\\" ...which is coming from here: https://github.com/rails/rails/blob/master/activesupport/lib/active_support/dependencies.rb#L444-L446\\r\\n\\r\\nThe MailView gem asks you to put a mailer in `app/mailers` like so:\\r\\n\\r\\n```ruby\\r\\nclass MessagePreview < MailView\\r\\n def example\\r\\n ExampleMailer.example\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nIf you change any model or controller in your application, you are forced to `touch tmp/restart.txt` to avoid raising the exception. I'm able to work around the issue by using the double-colon thingamajig to ensure we're at the top namespace:\\r\\n\\r\\n```ruby\\r\\nclass MessagePreview < MailView\\r\\n def example\\r\\n ::ExampleMailer.example\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\n...but notice it's done on the mailer. I did some debugging and noticed something strange in `load_missing_constant` like so:\\r\\n\\r\\n```ruby\\r\\nload_missing_constant(from_mod, const_name)\\r\\nfrom_mod = MessagePreview\\r\\nconst_name = ExampleMailer\\r\\n```\\r\\n\\r\\nSo, I believe `Dependencies` is (incorrectly?) assuming that `ExampleMailer` is defined in `MessagePreview` when it is just a regular mailer defined like so:\\r\\n\\r\\n```ruby\\r\\nclass ExampleMailer < ApplicationMailer\\r\\n def example\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\n...which, I believe was changed by this commit: https://github.com/rails/rails/commit/2ed325a3e90fc17c2d52a26bd1799b5f4e4bdf88\\r\\n\\r\\nI'm not sure if this is a bug with Rails or with MailView, to be honest. I haven't looked at the ActiveSupport::Dependencies code until now. Something seems fishy, though, so I thought I should open an issue here to get some more :eyes: on it. \\r\\n\\r\\n/cc @fxn \\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10682\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10682/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10682/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10682/events\",\"html_url\":\"https://github.com/rails/rails/issues/10682\",\"id\":14491022,\"number\":10682,\"title\":\"Adds a class level #destroy! method, which raises an\",\"user\":{\"login\":\"fabiokr\",\"id\":21800,\"avatar_url\":\"https://secure.gravatar.com/avatar/67ac8dcae2fde06e9b4833e9d3796e4c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"67ac8dcae2fde06e9b4833e9d3796e4c\",\"url\":\"https://api.github.com/users/fabiokr\",\"html_url\":\"https://github.com/fabiokr\",\"followers_url\":\"https://api.github.com/users/fabiokr/followers\",\"following_url\":\"https://api.github.com/users/fabiokr/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/fabiokr/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/fabiokr/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/fabiokr/subscriptions\",\"organizations_url\":\"https://api.github.com/users/fabiokr/orgs\",\"repos_url\":\"https://api.github.com/users/fabiokr/repos\",\"events_url\":\"https://api.github.com/users/fabiokr/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/fabiokr/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-19T01:48:16Z\",\"updated_at\":\"2013-05-19T01:48:16Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10682\",\"diff_url\":\"https://github.com/rails/rails/pull/10682.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10682.patch\"},\"body\":\"4faaa811614b408 instroduces the instance level `#destroy!` method, which raises ActiveRecord::RecordNotDestroyed on failure. \\r\\n\\r\\nThis PR adds a class level `destroy!` method, which delegates to the instance `destroy!` method. That way, one can do `Model.destroy!(id)`.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10681\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10681/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10681/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10681/events\",\"html_url\":\"https://github.com/rails/rails/issues/10681\",\"id\":14489482,\"number\":10681,\"title\":\"autosave_association issue that occurs when table has unique index (3.2.x backport)\",\"user\":{\"login\":\"jholton\",\"id\":733873,\"avatar_url\":\"https://secure.gravatar.com/avatar/f6f9bd18dcbce19b4e0d9c6cba2cf329?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f6f9bd18dcbce19b4e0d9c6cba2cf329\",\"url\":\"https://api.github.com/users/jholton\",\"html_url\":\"https://github.com/jholton\",\"followers_url\":\"https://api.github.com/users/jholton/followers\",\"following_url\":\"https://api.github.com/users/jholton/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jholton/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jholton/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jholton/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jholton/orgs\",\"repos_url\":\"https://api.github.com/users/jholton/repos\",\"events_url\":\"https://api.github.com/users/jholton/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jholton/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-18T22:22:28Z\",\"updated_at\":\"2013-05-18T22:22:28Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10681\",\"diff_url\":\"https://github.com/rails/rails/pull/10681.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10681.patch\"},\"body\":\"This is a backport of #10417\\r\\n\\r\\nThe issue:\\r\\nPer the comments in pull #3329, \\r\\nIf you have a table with a unique field index, and you mark a record for destruction, and you build a new record with the same value as the unique field, then when you call save, a database level unique index error will be thrown.\\r\\n\\r\\nThis happens because the record destruction happens after record creation.\\r\\n\\r\\nIn this pull request, I moved the record destruction ahead of the record creation.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10679\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10679/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10679/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10679/events\",\"html_url\":\"https://github.com/rails/rails/issues/10679\",\"id\":14487813,\"number\":10679,\"title\":\"Improper generator syntax for controller, model and scaffold within a module\",\"user\":{\"login\":\"AJ-Acevedo\",\"id\":953092,\"avatar_url\":\"https://secure.gravatar.com/avatar/13935313a12b251732345172e91557d6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"13935313a12b251732345172e91557d6\",\"url\":\"https://api.github.com/users/AJ-Acevedo\",\"html_url\":\"https://github.com/AJ-Acevedo\",\"followers_url\":\"https://api.github.com/users/AJ-Acevedo/followers\",\"following_url\":\"https://api.github.com/users/AJ-Acevedo/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/AJ-Acevedo/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/AJ-Acevedo/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/AJ-Acevedo/subscriptions\",\"organizations_url\":\"https://api.github.com/users/AJ-Acevedo/orgs\",\"repos_url\":\"https://api.github.com/users/AJ-Acevedo/repos\",\"events_url\":\"https://api.github.com/users/AJ-Acevedo/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/AJ-Acevedo/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-18T19:35:28Z\",\"updated_at\":\"2013-05-18T19:51:46Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I have a few concerns about the way the rails generator creates a controller, model, helper and a scaffold within a nested module. \\r\\n\\r\\n1. If you generate a controller `rails g controller bar/post index` and the `bar` module is not previously defined, rails will output an 'uninitialized constant' error.\\r\\n2. The generator does not follow the ruby idiom for nesting modules.\\r\\n3. Using the generator with a module requires a lot of refactoring to clean up the code.\\r\\n\\r\\n\\r\\nAccording to `rails g controller --help`:\\r\\n\\r\\n*To create a controller within a module, specify the controller name as a\\r\\n path like 'parent_module/controller_name'.*\\r\\n\\r\\n\\r\\n**STEPS TO REPRODUCE:**\\r\\n`$ rails plugin new foo --mountable`\\r\\n`$ rails g controller bar/post index `\\r\\n\\r\\n```ruby\\r\\n# foo/app/controllers/foo/bar/post_controller.rb\\r\\nrequire_dependency \\\"foo/application_controller\\\"\\r\\n\\r\\nmodule Foo\\r\\n class Bar::PostController < ApplicationController\\r\\n def index\\r\\n end\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nThe proper syntax for generating a controller within a module should be:\\r\\n\\r\\n```ruby\\r\\n# foo/app/controllers/foo/bar/post_controller.rb\\r\\nrequire_dependency \\\"foo/application_controller\\\"\\r\\n\\r\\nmodule Foo\\r\\n module Bar\\r\\n class PostController < ApplicationController\\r\\n def index\\r\\n end\\r\\n end\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nI have verified this behavior with the generator for controller, model, helper and scaffold.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10677\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10677/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10677/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10677/events\",\"html_url\":\"https://github.com/rails/rails/issues/10677\",\"id\":14482957,\"number\":10677,\"title\":\"Indexing or Unindexing single columns of a single table via migration generator\",\"user\":{\"login\":\"frankapimenta\",\"id\":497761,\"avatar_url\":\"https://secure.gravatar.com/avatar/d8aae6bb205ba190b1710a17d4f1b800?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"d8aae6bb205ba190b1710a17d4f1b800\",\"url\":\"https://api.github.com/users/frankapimenta\",\"html_url\":\"https://github.com/frankapimenta\",\"followers_url\":\"https://api.github.com/users/frankapimenta/followers\",\"following_url\":\"https://api.github.com/users/frankapimenta/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/frankapimenta/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/frankapimenta/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/frankapimenta/subscriptions\",\"organizations_url\":\"https://api.github.com/users/frankapimenta/orgs\",\"repos_url\":\"https://api.github.com/users/frankapimenta/repos\",\"events_url\":\"https://api.github.com/users/frankapimenta/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/frankapimenta/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/railties\",\"name\":\"railties\",\"color\":\"8BE06E\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":5,\"created_at\":\"2013-05-18T12:36:48Z\",\"updated_at\":\"2013-05-18T22:55:21Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10677\",\"diff_url\":\"https://github.com/rails/rails/pull/10677.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10677.patch\"},\"body\":\"Sometimes happens that later in the development process one realizes that a few columns of a particular table should have been indexed.\\r\\n\\r\\nThis pull request easies the addition and removal of indexes of single columns on/from a single table by using the migration generator via CLI\\r\\n\\r\\nThe changelog as well as the code provides the cases of use.\\r\\n\\r\\nLooking forward to your feedback.\\r\\n\\r\\nFrank Pimenta\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10674\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10674/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10674/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10674/events\",\"html_url\":\"https://github.com/rails/rails/issues/10674\",\"id\":14478218,\"number\":10674,\"title\":\"@_template is nil when assert_template is used in combination with open_session in an integration test\",\"user\":{\"login\":\"rubys\",\"id\":4815,\"avatar_url\":\"https://secure.gravatar.com/avatar/e2dda5e47fccc5ff0daa87debf48162b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"e2dda5e47fccc5ff0daa87debf48162b\",\"url\":\"https://api.github.com/users/rubys\",\"html_url\":\"https://github.com/rubys\",\"followers_url\":\"https://api.github.com/users/rubys/followers\",\"following_url\":\"https://api.github.com/users/rubys/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/rubys/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/rubys/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/rubys/subscriptions\",\"organizations_url\":\"https://api.github.com/users/rubys/orgs\",\"repos_url\":\"https://api.github.com/users/rubys/repos\",\"events_url\":\"https://api.github.com/users/rubys/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/rubys/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-18T02:36:56Z\",\"updated_at\":\"2013-05-18T02:36:56Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Introduced by 3073c531983de243219fb55be93fbcebfdd9c44e\\r\\n\\r\\nReproduction instructions: http://intertwingly.net/tmp/session.html\\r\\n\\r\\nBisect output:\\r\\n\\r\\n 3073c531983de243219fb55be93fbcebfdd9c44e is the first bad commit\\r\\n commit 3073c531983de243219fb55be93fbcebfdd9c44e\\r\\n Author: Ryan Davis <ryand-ruby@zenspider.com>\\r\\n Date: Mon May 6 17:38:45 2013 -0700\\r\\n\\r\\n Updates to make rails 4 happy with minitest 5:\\r\\n\\r\\n + Namespace changes, overhaul of runners.\\r\\n + Internal ivar name changes\\r\\n - Removed a logger globally applied to tests that spew everywhere?!?\\r\\n + Override Minitest#__run to sort tests by name.\\r\\n + Reworked testing isolation to work with the new cleaner architecture.\\r\\n - Removed a bunch of tests that just test minitest straight up. I think\\r\\n these changes were all merged to minitest 4 a long time ago.\\r\\n - Minor report output differences.\\r\\n\\r\\n :040000 040000 295d8c9281b644f5767b883e5ef4c41b89e2bb7d\\r\\n f2478b2d3d08698f2e3bcbe876e803b74c870116 M actionpack\\r\\n :040000 040000 35194c85c67ac4efb09cfb6c5b5ba3c5914cc296\\r\\n 209193156de0f6678519d7c62859e90d1031e698 M activemodel\\r\\n :040000 040000 a43d8d2402ea77428dd373495b7b6710c734546e\\r\\n 9334b986b22b0f4b893eab70debe8a9137909610 M activesupport\\r\\n :040000 040000 0847ad28a1ea82d9c847246fc6c9122d23a8a120\\r\\n ae0eb9f69b707e925de716bbe217ea9b9ce0e7b5 M railties\\r\\n bisect run success\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10673\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10673/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10673/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10673/events\",\"html_url\":\"https://github.com/rails/rails/issues/10673\",\"id\":14476727,\"number\":10673,\"title\":\"Add ability to specify how a class is converted to Arel predicate when passed to where\",\"user\":{\"login\":\"sgrif\",\"id\":1529387,\"avatar_url\":\"https://secure.gravatar.com/avatar/0f674817f8c6e149518f0a4b4ad3d560?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"0f674817f8c6e149518f0a4b4ad3d560\",\"url\":\"https://api.github.com/users/sgrif\",\"html_url\":\"https://github.com/sgrif\",\"followers_url\":\"https://api.github.com/users/sgrif/followers\",\"following_url\":\"https://api.github.com/users/sgrif/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/sgrif/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/sgrif/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/sgrif/subscriptions\",\"organizations_url\":\"https://api.github.com/users/sgrif/orgs\",\"repos_url\":\"https://api.github.com/users/sgrif/repos\",\"events_url\":\"https://api.github.com/users/sgrif/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/sgrif/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":13,\"created_at\":\"2013-05-18T00:27:00Z\",\"updated_at\":\"2013-05-20T17:22:34Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10673\",\"diff_url\":\"https://github.com/rails/rails/pull/10673.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10673.patch\"},\"body\":\"This adds the ability for rails apps or gems to have granular control\\r\\nover how a domain object is converted to sql. One simple use case would\\r\\nbe to add support for Regexp. Another simple case would be something\\r\\nlike the following:\\r\\n\\r\\n class DateRange < Struct.new(:start, :end)\\r\\n def include?(date)\\r\\n (start..end).cover?(date)\\r\\n end\\r\\n end\\r\\n\\r\\n class DateRangePredicate\\r\\n def call(attribute, range)\\r\\n attribute.in(range.start..range.end)\\r\\n end\\r\\n end\\r\\n\\r\\n ActiveRecord::PredicateBuilder.register_handler(DateRange, DateRangePredicate.new)\\r\\n\\r\\nMore complex cases might include taking a currency object and converting\\r\\nit from EUR to USD before performing the query.\\r\\n\\r\\nBy moving the existing handlers to this format, we were also able to\\r\\nnicely refactor a rather nasty method in PredicateBuilder.\\r\\n\\r\\nThis would also make it fairly simple to add make it possible to define special handling for individual columns (e.g. for things like database level encryption, which currently requires massive hacking to perform). That's probably suited for a separate pull request, though.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10671\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10671/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10671/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10671/events\",\"html_url\":\"https://github.com/rails/rails/issues/10671\",\"id\":14473104,\"number\":10671,\"title\":\"mysql migrations break when text columns are non-nullable\",\"user\":{\"login\":\"michaelglass\",\"id\":60136,\"avatar_url\":\"https://secure.gravatar.com/avatar/1c33737c12ccc6d022ddeff6275ebdc7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"1c33737c12ccc6d022ddeff6275ebdc7\",\"url\":\"https://api.github.com/users/michaelglass\",\"html_url\":\"https://github.com/michaelglass\",\"followers_url\":\"https://api.github.com/users/michaelglass/followers\",\"following_url\":\"https://api.github.com/users/michaelglass/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/michaelglass/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/michaelglass/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/michaelglass/subscriptions\",\"organizations_url\":\"https://api.github.com/users/michaelglass/orgs\",\"repos_url\":\"https://api.github.com/users/michaelglass/repos\",\"events_url\":\"https://api.github.com/users/michaelglass/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/michaelglass/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-17T21:52:40Z\",\"updated_at\":\"2013-05-20T17:22:39Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10671\",\"diff_url\":\"https://github.com/rails/rails/pull/10671.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10671.patch\"},\"body\":\"mysql doesn't allow default for text columns,but effectively has a default of \\\"\\\" when null is not allowed. That default breaks any migration changes.\\r\\n\\r\\nI'm not sure how to test this in the context of existing rails test.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10670\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10670/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10670/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10670/events\",\"html_url\":\"https://github.com/rails/rails/issues/10670\",\"id\":14469198,\"number\":10670,\"title\":\"Change find_or_create to do INSERT before SELECT\",\"user\":{\"login\":\"jcoglan\",\"id\":9265,\"avatar_url\":\"https://secure.gravatar.com/avatar/81eec7f220df03d5b8cadf106a2c14c5?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"81eec7f220df03d5b8cadf106a2c14c5\",\"url\":\"https://api.github.com/users/jcoglan\",\"html_url\":\"https://github.com/jcoglan\",\"followers_url\":\"https://api.github.com/users/jcoglan/followers\",\"following_url\":\"https://api.github.com/users/jcoglan/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jcoglan/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jcoglan/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jcoglan/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jcoglan/orgs\",\"repos_url\":\"https://api.github.com/users/jcoglan/repos\",\"events_url\":\"https://api.github.com/users/jcoglan/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jcoglan/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-17T20:04:04Z\",\"updated_at\":\"2013-05-17T22:56:06Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10670\",\"diff_url\":\"https://github.com/rails/rails/pull/10670.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10670.patch\"},\"body\":\"This makes find_or_create() safe to use with concurrent requests by\\r\\nrelying on unique indexes to raise errors if the INSERT fails. By doing\\r\\nthe SELECT first, we leave this method open to the same race conditions\\r\\nthat affect uniqueness validation.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10669\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10669/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10669/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10669/events\",\"html_url\":\"https://github.com/rails/rails/issues/10669\",\"id\":14464110,\"number\":10669,\"title\":\"Merging scopes with joins clauses written as text fails\",\"user\":{\"login\":\"iwiznia\",\"id\":521248,\"avatar_url\":\"https://secure.gravatar.com/avatar/f81560e8e8743d0df6a467b88df31bbc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f81560e8e8743d0df6a467b88df31bbc\",\"url\":\"https://api.github.com/users/iwiznia\",\"html_url\":\"https://github.com/iwiznia\",\"followers_url\":\"https://api.github.com/users/iwiznia/followers\",\"following_url\":\"https://api.github.com/users/iwiznia/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/iwiznia/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/iwiznia/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/iwiznia/subscriptions\",\"organizations_url\":\"https://api.github.com/users/iwiznia/orgs\",\"repos_url\":\"https://api.github.com/users/iwiznia/repos\",\"events_url\":\"https://api.github.com/users/iwiznia/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/iwiznia/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T17:56:55Z\",\"updated_at\":\"2013-05-17T18:03:25Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"This is related to the issue: #3002 and the pull requests: #5494, #10164, #10303.\\r\\nI'm testing this in master branch.\\r\\n\\r\\nI have a failing test here: https://github.com/iwiznia/rails/commit/d12343fe4fd65b94f48bb0df5a99177cd8d6ba20\\r\\nI don't know if I need to open a pull request just with a failing test or just report it here.\\r\\n\\r\\nBasically, this works:\\r\\n```ruby\\r\\nspecial_comments_with_ratings = SpecialComment.joins(:ratings)\\r\\nposts_with_special_comments_with_ratings = Post.joins(:special_comments).merge(special_comments_with_ratings)\\r\\n```\\r\\nAnd this fails with \\\"ActiveRecord::ConfigurationError: Association named 'INNER JOIN \\\"ratings\\\" ON \\\"comments\\\".id = \\\"ratings\\\".comment_id' was not found on Post; perhaps you misspelled it?\\\":\\r\\n```ruby\\r\\nspecial_comments_with_ratings = SpecialComment.joins(\\\"INNER JOIN \#{Rating.quoted_table_name} ON \#{SpecialComment.quoted_table_name}.id = \#{Rating.quoted_table_name}.comment_id\\\")\\r\\nposts_with_special_comments_with_ratings = Post.joins(:special_comments).merge(special_comments_with_ratings)\\r\\n```\\r\\n\\r\\nIt seems that this was working and got broken somewhere (I'm basing this on this comment https://github.com/rails/rails/pull/5494#issuecomment-5262803 that states that merging a join using :symbol didn't work but it did work when sending a string, now the opposite is true).\\r\\n\\r\\n(I don't know how to fix the issue, so if anyone can point me in the right direction maybe I can give it a try...\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10668\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10668/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10668/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10668/events\",\"html_url\":\"https://github.com/rails/rails/issues/10668\",\"id\":14462901,\"number\":10668,\"title\":\"Bad encoding when presenting the lines of a posted text file\",\"user\":{\"login\":\"pedrogaspar\",\"id\":471214,\"avatar_url\":\"https://secure.gravatar.com/avatar/61631dfeacc216221bd64f3cc0012a9f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"61631dfeacc216221bd64f3cc0012a9f\",\"url\":\"https://api.github.com/users/pedrogaspar\",\"html_url\":\"https://github.com/pedrogaspar\",\"followers_url\":\"https://api.github.com/users/pedrogaspar/followers\",\"following_url\":\"https://api.github.com/users/pedrogaspar/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/pedrogaspar/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/pedrogaspar/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/pedrogaspar/subscriptions\",\"organizations_url\":\"https://api.github.com/users/pedrogaspar/orgs\",\"repos_url\":\"https://api.github.com/users/pedrogaspar/repos\",\"events_url\":\"https://api.github.com/users/pedrogaspar/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/pedrogaspar/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T17:25:10Z\",\"updated_at\":\"2013-05-17T17:25:10Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Having a form that submits a file, when reading with:\\r\\n\\r\\n file = params[:file]\\r\\n @file = file.read\\r\\n\\r\\nand presenting in a view\\r\\n\\r\\n <%= @file %>\\r\\n\\r\\nShows the error: _incompatible character encodings: ASCII-8BIT and UTF-8_\\r\\n\\r\\nBut if we read with\\r\\n\\r\\n file = File.read(params[:file].path)\\r\\n\\r\\nIt works.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10667\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10667/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10667/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10667/events\",\"html_url\":\"https://github.com/rails/rails/issues/10667\",\"id\":14462059,\"number\":10667,\"title\":\"Eliminate minitest warnings\",\"user\":{\"login\":\"rubys\",\"id\":4815,\"avatar_url\":\"https://secure.gravatar.com/avatar/e2dda5e47fccc5ff0daa87debf48162b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"e2dda5e47fccc5ff0daa87debf48162b\",\"url\":\"https://api.github.com/users/rubys\",\"html_url\":\"https://github.com/rubys\",\"followers_url\":\"https://api.github.com/users/rubys/followers\",\"following_url\":\"https://api.github.com/users/rubys/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/rubys/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/rubys/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/rubys/subscriptions\",\"organizations_url\":\"https://api.github.com/users/rubys/orgs\",\"repos_url\":\"https://api.github.com/users/rubys/repos\",\"events_url\":\"https://api.github.com/users/rubys/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/rubys/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T17:04:44Z\",\"updated_at\":\"2013-05-17T17:04:44Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10667\",\"diff_url\":\"https://github.com/rails/rails/pull/10667.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10667.patch\"},\"body\":\"See https://github.com/seattlerb/minitest/commit/9a57c520ceac76abfe6105866f8548a94eb357b6#L15R8\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10666\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10666/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10666/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10666/events\",\"html_url\":\"https://github.com/rails/rails/issues/10666\",\"id\":14451788,\"number\":10666,\"title\":\"make \\\"rails dbconsole\\\" work with activerecord-postgis-adapter\",\"user\":{\"login\":\"YanhaoYang\",\"id\":1280056,\"avatar_url\":\"https://secure.gravatar.com/avatar/b72e52690b1e7225824a48afa3813e9a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"b72e52690b1e7225824a48afa3813e9a\",\"url\":\"https://api.github.com/users/YanhaoYang\",\"html_url\":\"https://github.com/YanhaoYang\",\"followers_url\":\"https://api.github.com/users/YanhaoYang/followers\",\"following_url\":\"https://api.github.com/users/YanhaoYang/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/YanhaoYang/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/YanhaoYang/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/YanhaoYang/subscriptions\",\"organizations_url\":\"https://api.github.com/users/YanhaoYang/orgs\",\"repos_url\":\"https://api.github.com/users/YanhaoYang/repos\",\"events_url\":\"https://api.github.com/users/YanhaoYang/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/YanhaoYang/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T13:19:34Z\",\"updated_at\":\"2013-05-17T13:19:34Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10666\",\"diff_url\":\"https://github.com/rails/rails/pull/10666.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10666.patch\"},\"body\":\"It's a minor change. I only added \\\"postgis\\\" to the \\\"when\\\" clause to make it recognize \\\"postgis\\\".\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10664\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10664/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10664/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10664/events\",\"html_url\":\"https://github.com/rails/rails/issues/10664\",\"id\":14446826,\"number\":10664,\"title\":\"Fix doc in Postgres database creation\",\"user\":{\"login\":\"aderyabin\",\"id\":88676,\"avatar_url\":\"https://secure.gravatar.com/avatar/cebfabb19814410151c8375b798643df?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"cebfabb19814410151c8375b798643df\",\"url\":\"https://api.github.com/users/aderyabin\",\"html_url\":\"https://github.com/aderyabin\",\"followers_url\":\"https://api.github.com/users/aderyabin/followers\",\"following_url\":\"https://api.github.com/users/aderyabin/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/aderyabin/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/aderyabin/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/aderyabin/subscriptions\",\"organizations_url\":\"https://api.github.com/users/aderyabin/orgs\",\"repos_url\":\"https://api.github.com/users/aderyabin/repos\",\"events_url\":\"https://api.github.com/users/aderyabin/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/aderyabin/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T10:47:00Z\",\"updated_at\":\"2013-05-17T10:47:00Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10664\",\"diff_url\":\"https://github.com/rails/rails/pull/10664.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10664.patch\"},\"body\":\"By default encoding for new Postgres database is [utf8](https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L57) and it has [assert](https://github.com/aderyabin/rails/blob/54a2ec13026b14da70f1894d87a4fe04a63e5828/activerecord/test/cases/adapters/postgresql/active_schema_test.rb#L17) but not pointed in doc.\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10662\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10662/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10662/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10662/events\",\"html_url\":\"https://github.com/rails/rails/issues/10662\",\"id\":14442172,\"number\":10662,\"title\":\"Refactor AR's validations_test.rb\",\"user\":{\"login\":\"tkhr\",\"id\":1095842,\"avatar_url\":\"https://secure.gravatar.com/avatar/653400f191791e1bcb454c05bfc14ed0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"653400f191791e1bcb454c05bfc14ed0\",\"url\":\"https://api.github.com/users/tkhr\",\"html_url\":\"https://github.com/tkhr\",\"followers_url\":\"https://api.github.com/users/tkhr/followers\",\"following_url\":\"https://api.github.com/users/tkhr/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/tkhr/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/tkhr/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/tkhr/subscriptions\",\"organizations_url\":\"https://api.github.com/users/tkhr/orgs\",\"repos_url\":\"https://api.github.com/users/tkhr/repos\",\"events_url\":\"https://api.github.com/users/tkhr/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/tkhr/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-17T08:19:29Z\",\"updated_at\":\"2013-05-20T14:41:00Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10662\",\"diff_url\":\"https://github.com/rails/rails/pull/10662.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10662.patch\"},\"body\":\"Some refactoring, tell me anything if u thought something about this PR :D \"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10660\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10660/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10660/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10660/events\",\"html_url\":\"https://github.com/rails/rails/issues/10660\",\"id\":14438855,\"number\":10660,\"title\":\"rake db:test:prepare not behaving as intended (or deprecated?)\",\"user\":{\"login\":\"prusswan\",\"id\":671970,\"avatar_url\":\"https://secure.gravatar.com/avatar/ee662a0ddb22652f614486f529bb06ec?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"ee662a0ddb22652f614486f529bb06ec\",\"url\":\"https://api.github.com/users/prusswan\",\"html_url\":\"https://github.com/prusswan\",\"followers_url\":\"https://api.github.com/users/prusswan/followers\",\"following_url\":\"https://api.github.com/users/prusswan/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/prusswan/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/prusswan/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/prusswan/subscriptions\",\"organizations_url\":\"https://api.github.com/users/prusswan/orgs\",\"repos_url\":\"https://api.github.com/users/prusswan/repos\",\"events_url\":\"https://api.github.com/users/prusswan/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/prusswan/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-17T05:53:29Z\",\"updated_at\":\"2013-05-20T07:06:26Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Steps to reproduce:\\r\\n\\r\\n1. rake db:drop\\r\\n2. rake db:create\\r\\n3. rake db:migrate\\r\\n4. rake db:test:prepare\\r\\n5. rspec spec \\r\\n\\r\\nThis results in a bunch of failures about missing tables, which indicates that step 4 had no effect.\\r\\n\\r\\nProblem does not occur if `rake test:prepare` is used instead. \\r\\nProblem also does not occur with `rake spec` which seems to negate the necessity for any `test:prepare` statement.\\r\\n\\r\\nReference project: https://github.com/prusswan/mstar-rails/tree/rails4 (updated to use rails 4 defaults) \\r\\n\\r\\n\\r\\nUpdate:\\r\\n\\r\\nI just saw the related https://github.com/rails/rails/issues/10563, but since rspec-rails 2.13.1 is already in use, the issue that remains is still, to clarify the status of `rake db:test:prepare` \\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10658\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10658/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10658/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10658/events\",\"html_url\":\"https://github.com/rails/rails/issues/10658\",\"id\":14434364,\"number\":10658,\"title\":\"Scopes defined on Abstract ActiveRecord classes are missing table names when called from subclasses\",\"user\":{\"login\":\"lsylvester\",\"id\":191128,\"avatar_url\":\"https://secure.gravatar.com/avatar/91e8840fc25244e0303c6c6cab989537?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"91e8840fc25244e0303c6c6cab989537\",\"url\":\"https://api.github.com/users/lsylvester\",\"html_url\":\"https://github.com/lsylvester\",\"followers_url\":\"https://api.github.com/users/lsylvester/followers\",\"following_url\":\"https://api.github.com/users/lsylvester/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/lsylvester/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/lsylvester/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/lsylvester/subscriptions\",\"organizations_url\":\"https://api.github.com/users/lsylvester/orgs\",\"repos_url\":\"https://api.github.com/users/lsylvester/repos\",\"events_url\":\"https://api.github.com/users/lsylvester/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/lsylvester/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":6,\"created_at\":\"2013-05-17T01:24:05Z\",\"updated_at\":\"2013-05-18T14:27:42Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"If a scope is defined on an abstract active record class, when it is called by one of its subclasses the sql generated is missing a table name.\\r\\n\\r\\n```ruby \\r\\nclass AbstractCompany < ActiveRecord::Base\\r\\n self.abstract_class = true\\r\\n \\r\\n scope :abstract_company_scope, ->{ order('id') }\\r\\nend\\r\\n\\r\\nclass Company < AbstractCompany\\r\\nend\\r\\n\\r\\nCompany.abstract_company_scope #=> ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: : SELECT \\\"\\\".* FROM \\\"\\\" ORDER BY id LIMIT 1\\r\\n```\\r\\n\\r\\nTest has been added at lsylvester/rails@c64023bc9fd7dfe10f564fedbd7299240bd5da15\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10655\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10655/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10655/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10655/events\",\"html_url\":\"https://github.com/rails/rails/issues/10655\",\"id\":14428834,\"number\":10655,\"title\":\"ActiveRecord messing with Arel::Nodes::NamedFunctions on where\",\"user\":{\"login\":\"sobrinho\",\"id\":26460,\"avatar_url\":\"https://secure.gravatar.com/avatar/c2dc9c02ce7a041285725a4fc9e5f6d2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"c2dc9c02ce7a041285725a4fc9e5f6d2\",\"url\":\"https://api.github.com/users/sobrinho\",\"html_url\":\"https://github.com/sobrinho\",\"followers_url\":\"https://api.github.com/users/sobrinho/followers\",\"following_url\":\"https://api.github.com/users/sobrinho/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/sobrinho/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/sobrinho/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/sobrinho/subscriptions\",\"organizations_url\":\"https://api.github.com/users/sobrinho/orgs\",\"repos_url\":\"https://api.github.com/users/sobrinho/repos\",\"events_url\":\"https://api.github.com/users/sobrinho/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/sobrinho/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-16T21:57:27Z\",\"updated_at\":\"2013-05-18T03:45:01Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Hi guys,\\r\\n\\r\\nI'm not sure why, I'm still not familiar with ActiveRecord and Arel internals :sob:\\r\\n\\r\\nGiven that model:\\r\\n\\r\\n``` ruby\\r\\nclass Transaction < ActiveRecord::Base\\r\\n def self.year(year)\\r\\n where(Arel::Nodes::NamedFunction.new('date_part', ['year', arel_table[:due_date]]).eq(year))\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nIt works as expect using the scope:\\r\\n\\r\\n``` ruby\\r\\nTransaction.month(5).to_sql\\r\\n#=> \\\"SELECT \\\\\\\"transactions\\\\\\\".* FROM \\\\\\\"transactions\\\\\\\" WHERE date_part('month', \\\\\\\"transactions\\\\\\\".\\\\\\\"due_date\\\\\\\") = 5\\\"\\r\\n```\\r\\n\\r\\nBut it prepends a strange argument to the named function when combined with any other where clauses:\\r\\n\\r\\n``` ruby\\r\\nTransaction.where(:id => 1).month(5).to_sql\\r\\n#=> \\\"SELECT \\\\\\\"transactions\\\\\\\".* FROM \\\\\\\"transactions\\\\\\\" WHERE \\\\\\\"transactions\\\\\\\".\\\\\\\"id\\\\\\\" = 1 AND date_part(0, \\\\\\\"transactions\\\\\\\".\\\\\\\"due_date\\\\\\\") = 5\\\"\\r\\n```\\r\\n\\r\\nNote the 0 as first argument for the date_part function.\\r\\n\\r\\nBut it not happens when the where is applied latter:\\r\\n\\r\\n``` ruby\\r\\nTransaction.month(5).where(:id => 1).to_sql\\r\\n#=> \\\"SELECT \\\\\\\"transactions\\\\\\\".* FROM \\\\\\\"transactions\\\\\\\" WHERE date_part('month', \\\\\\\"transactions\\\\\\\".\\\\\\\"due_date\\\\\\\") = 5 AND \\\\\\\"transactions\\\\\\\".\\\\\\\"id\\\\\\\" = 1\\\"\\r\\n```\\r\\n\\r\\nI will pay some beers for who fix this :beers: \"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10653\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10653/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10653/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10653/events\",\"html_url\":\"https://github.com/rails/rails/issues/10653\",\"id\":14427413,\"number\":10653,\"title\":\"Allows passing arguments to content_tag block.\",\"user\":{\"login\":\"eloyesp\",\"id\":173797,\"avatar_url\":\"https://secure.gravatar.com/avatar/224f5b1b5ee448ec8152236ede91908c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"224f5b1b5ee448ec8152236ede91908c\",\"url\":\"https://api.github.com/users/eloyesp\",\"html_url\":\"https://github.com/eloyesp\",\"followers_url\":\"https://api.github.com/users/eloyesp/followers\",\"following_url\":\"https://api.github.com/users/eloyesp/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/eloyesp/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/eloyesp/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/eloyesp/subscriptions\",\"organizations_url\":\"https://api.github.com/users/eloyesp/orgs\",\"repos_url\":\"https://api.github.com/users/eloyesp/repos\",\"events_url\":\"https://api.github.com/users/eloyesp/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/eloyesp/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":5,\"created_at\":\"2013-05-16T21:20:27Z\",\"updated_at\":\"2013-05-16T22:12:32Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10653\",\"diff_url\":\"https://github.com/rails/rails/pull/10653.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10653.patch\"},\"body\":\"This will ease the use on plugins like tabs_on_rails. It may also allow to use\\nthis method more, within methods like form for.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10651\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10651/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10651/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10651/events\",\"html_url\":\"https://github.com/rails/rails/issues/10651\",\"id\":14417981,\"number\":10651,\"title\":\"Trailing slashes\",\"user\":{\"login\":\"shlima\",\"id\":2356771,\"avatar_url\":\"https://secure.gravatar.com/avatar/bf2bcff01eaa283b7e51e3c7706b84e1?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"bf2bcff01eaa283b7e51e3c7706b84e1\",\"url\":\"https://api.github.com/users/shlima\",\"html_url\":\"https://github.com/shlima\",\"followers_url\":\"https://api.github.com/users/shlima/followers\",\"following_url\":\"https://api.github.com/users/shlima/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/shlima/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/shlima/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/shlima/subscriptions\",\"organizations_url\":\"https://api.github.com/users/shlima/orgs\",\"repos_url\":\"https://api.github.com/users/shlima/repos\",\"events_url\":\"https://api.github.com/users/shlima/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/shlima/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/needs+feedback\",\"name\":\"needs feedback\",\"color\":\"ededed\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-16T17:47:15Z\",\"updated_at\":\"2013-05-19T19:44:57Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Hello.\\r\\nSeems to be trailing slashes do not work in Rails 4?\\r\\nThanks for your job teem!\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10647\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10647/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10647/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10647/events\",\"html_url\":\"https://github.com/rails/rails/issues/10647\",\"id\":14414245,\"number\":10647,\"title\":\"Engines guide doesn't mention requiring decorators\",\"user\":{\"login\":\"mikecmpbll\",\"id\":1962801,\"avatar_url\":\"https://secure.gravatar.com/avatar/0ae26dc39d2a7b129d1a3f49eb4fe9e0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"0ae26dc39d2a7b129d1a3f49eb4fe9e0\",\"url\":\"https://api.github.com/users/mikecmpbll\",\"html_url\":\"https://github.com/mikecmpbll\",\"followers_url\":\"https://api.github.com/users/mikecmpbll/followers\",\"following_url\":\"https://api.github.com/users/mikecmpbll/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/mikecmpbll/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/mikecmpbll/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/mikecmpbll/subscriptions\",\"organizations_url\":\"https://api.github.com/users/mikecmpbll/orgs\",\"repos_url\":\"https://api.github.com/users/mikecmpbll/repos\",\"events_url\":\"https://api.github.com/users/mikecmpbll/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/mikecmpbll/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":4,\"created_at\":\"2013-05-16T16:21:53Z\",\"updated_at\":\"2013-05-16T17:18:14Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"The [Engines guide](http://edgeguides.rubyonrails.org/engines.html#overriding-models-and-controllers) goes into a bit of detail about the decorator pattern with `class_eval`, but it makes no mention of the fact you have to load these decorators in some how, I eventually found the following code from the `radar/forem` repo:\\r\\n\\r\\n # lib/blorgh/engine.rb\\r\\n module Blorgh\\r\\n class Engine < ::Rails::Engine\\r\\n isolate_namespace Blorgh\\r\\n\\r\\n config.to_prepare do\\r\\n Dir.glob(Rails.root + \\\"app/decorators/**/*_decorator*.rb\\\").each do |c|\\r\\n require_dependency(c)\\r\\n end\\r\\n end\\r\\n end\\r\\n end\\r\\n\\r\\nThis seems to load decorators from the app which mounts your engine, so you can override the engine. Either I'm missing something or this should probably be mentioned as necessary when using decorators as suggested in the guides?\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10643\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10643/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10643/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10643/events\",\"html_url\":\"https://github.com/rails/rails/issues/10643\",\"id\":14407895,\"number\":10643,\"title\":\"[Rails 4] Association Unscoped does not work\",\"user\":{\"login\":\"achiinto\",\"id\":469412,\"avatar_url\":\"https://secure.gravatar.com/avatar/d40b80c880aaaad2f05d991f9fe597c6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"d40b80c880aaaad2f05d991f9fe597c6\",\"url\":\"https://api.github.com/users/achiinto\",\"html_url\":\"https://github.com/achiinto\",\"followers_url\":\"https://api.github.com/users/achiinto/followers\",\"following_url\":\"https://api.github.com/users/achiinto/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/achiinto/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/achiinto/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/achiinto/subscriptions\",\"organizations_url\":\"https://api.github.com/users/achiinto/orgs\",\"repos_url\":\"https://api.github.com/users/achiinto/repos\",\"events_url\":\"https://api.github.com/users/achiinto/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/achiinto/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/regression\",\"name\":\"regression\",\"color\":\"e10c02\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":{\"url\":\"https://api.github.com/repos/rails/rails/milestones/9\",\"labels_url\":\"https://api.github.com/repos/rails/rails/milestones/9/labels\",\"id\":44893,\"number\":9,\"title\":\"4.0.0\",\"description\":\"Changes that break 3.x API.\",\"creator\":{\"login\":\"jeremy\",\"id\":199,\"avatar_url\":\"https://secure.gravatar.com/avatar/24d2f8804e6bb4b7ea6bd11e0a586470?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"24d2f8804e6bb4b7ea6bd11e0a586470\",\"url\":\"https://api.github.com/users/jeremy\",\"html_url\":\"https://github.com/jeremy\",\"followers_url\":\"https://api.github.com/users/jeremy/followers\",\"following_url\":\"https://api.github.com/users/jeremy/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jeremy/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jeremy/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jeremy/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jeremy/orgs\",\"repos_url\":\"https://api.github.com/users/jeremy/repos\",\"events_url\":\"https://api.github.com/users/jeremy/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jeremy/received_events\",\"type\":\"User\"},\"open_issues\":3,\"closed_issues\":89,\"state\":\"open\",\"created_at\":\"2011-10-09T02:53:46Z\",\"updated_at\":\"2013-05-16T20:08:49Z\",\"due_on\":null},\"comments\":2,\"created_at\":\"2013-05-16T14:17:54Z\",\"updated_at\":\"2013-05-17T13:56:46Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I am not sure if this is a bug. Back in Rails 3. I believe I could do this...\\r\\n\\r\\n```ruby\\r\\nbelongs_to :creator, scope: unscoped, class_name: \\\"User\\\"\\r\\n```\\r\\n\\r\\nBut this in Rails 4 does not work...\\r\\n\\r\\n```ruby\\r\\nbelongs_to :creator, -> { unscoped }, class_name: \\\"User\\\"\\r\\n```\\r\\n\\r\\nAnd I had to do it this way...\\r\\n\\r\\n```ruby\\r\\nbelongs_to :creator, -> { where is_destroyed: [true, false] }, class_name: \\\"User\\\"\\r\\n```\\r\\n\\r\\nBut this is still working...\\r\\n\\r\\n```irb\\r\\nUser.where(is_destroyed: false).unscoped.find 2\\r\\n# User 2 is_destroyed: true\\r\\n```\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10642\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10642/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10642/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10642/events\",\"html_url\":\"https://github.com/rails/rails/issues/10642\",\"id\":14406297,\"number\":10642,\"title\":\"Show real LoadError on helpers require\",\"user\":{\"login\":\"LTe\",\"id\":160962,\"avatar_url\":\"https://secure.gravatar.com/avatar/98f11c73a95318bbf85e419c1727434d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"98f11c73a95318bbf85e419c1727434d\",\"url\":\"https://api.github.com/users/LTe\",\"html_url\":\"https://github.com/LTe\",\"followers_url\":\"https://api.github.com/users/LTe/followers\",\"following_url\":\"https://api.github.com/users/LTe/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/LTe/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/LTe/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/LTe/subscriptions\",\"organizations_url\":\"https://api.github.com/users/LTe/orgs\",\"repos_url\":\"https://api.github.com/users/LTe/repos\",\"events_url\":\"https://api.github.com/users/LTe/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/LTe/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-16T13:44:28Z\",\"updated_at\":\"2013-05-17T07:05:08Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10642\",\"diff_url\":\"https://github.com/rails/rails/pull/10642.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10642.patch\"},\"body\":\"When helper try to require missing file rails will throw exception about\\r\\nmissing helper.\\r\\n\\r\\n```ruby\\r\\n# app/helpers/my_helper.rb\\r\\nrequire 'missing'\\r\\n\\r\\nmodule MyHelper\\r\\nend\\r\\n```\\r\\n\\r\\nAnd when we try do load helper\\r\\n\\r\\n```ruby\\r\\nclass ApplicationController\\r\\n helper :my\\r\\nend\\r\\n```\\r\\n\\r\\nRails will throw exception. This is wrong because there is a helper file.\\r\\n\\r\\n```\\r\\nMissing helper file helpers/my_helper.rb\\r\\n```\\r\\n\\r\\nNow when helper try to require non-existed file rails will throw proper exception.\\r\\n\\r\\n```\\r\\nNo such file to load -- missing\\r\\n```\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10635\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10635/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10635/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10635/events\",\"html_url\":\"https://github.com/rails/rails/issues/10635\",\"id\":14360294,\"number\":10635,\"title\":\"Use `Base.strict_decode64` instead of `Base.decode64` \",\"user\":{\"login\":\"vipulnsward\",\"id\":567626,\"avatar_url\":\"https://secure.gravatar.com/avatar/f459742822cf8347e83d5c445378a934?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f459742822cf8347e83d5c445378a934\",\"url\":\"https://api.github.com/users/vipulnsward\",\"html_url\":\"https://github.com/vipulnsward\",\"followers_url\":\"https://api.github.com/users/vipulnsward/followers\",\"following_url\":\"https://api.github.com/users/vipulnsward/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/vipulnsward/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/vipulnsward/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/vipulnsward/subscriptions\",\"organizations_url\":\"https://api.github.com/users/vipulnsward/orgs\",\"repos_url\":\"https://api.github.com/users/vipulnsward/repos\",\"events_url\":\"https://api.github.com/users/vipulnsward/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/vipulnsward/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-15T14:13:13Z\",\"updated_at\":\"2013-05-15T20:51:34Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10635\",\"diff_url\":\"https://github.com/rails/rails/pull/10635.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10635.patch\"},\"body\":\"Use `Base.strict_decode64` instead of `Base.decode64` just as we do in encoding;\\r\\n\\r\\nAlso change `map` to `map!` on new array, to map inplace and reduce extra object allocation\\r\\n\"}]", :headers=>{"Server"=>"GitHub.com", "Date"=>"Mon, 20 May 2013 20:30:29 GMT", "Content-Type"=>"application/json; charset=utf-8", "Connection"=>"keep-alive", "Status"=>"200 OK", "X-RateLimit-Limit"=>"60", "X-RateLimit-Remaining"=>"56", "Vary"=>"Accept, Accept-Encoding", "Cache-Control"=>"public, max-age=60, s-maxage=60", "Last-Modified"=>"Mon, 20 May 2013 20:29:58 GMT", "ETag"=>"\"16e479b41ab6c4e83e7c772a9f805491\"", "X-GitHub-Media-Type"=>"github.beta; param=3.raw; format=json", "Link"=>"<https://api.github.com/repositories/8514/issues?page=2>; rel=\"next\", <https://api.github.com/repositories/8514/issues?page=18>; rel=\"last\"", "X-Content-Type-Options"=>"nosniff", "Content-Length"=>"73334", "Access-Control-Allow-Credentials"=>"true", "Access-Control-Expose-Headers"=>"Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes", "Access-Control-Allow-Origin"=>"*", "X-RateLimit-Reset" => "1504196685"}, :status=>200, :remote_ip=>"207.97.227.243"}
20
21
  when :second
21
- {:body=>"[{\"url\":\"https://api.github.com/repos/rails/rails/issues/10634\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10634/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10634/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10634/events\",\"html_url\":\"https://github.com/rails/rails/issues/10634\",\"id\":14358547,\"number\":10634,\"title\":\"Maintain proleptic gregorian in Time#advance\",\"user\":{\"login\":\"teleological\",\"id\":61700,\"avatar_url\":\"https://secure.gravatar.com/avatar/d856d2ac977eebd19b55bc4cbd7cf9a9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"d856d2ac977eebd19b55bc4cbd7cf9a9\",\"url\":\"https://api.github.com/users/teleological\",\"html_url\":\"https://github.com/teleological\",\"followers_url\":\"https://api.github.com/users/teleological/followers\",\"following_url\":\"https://api.github.com/users/teleological/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/teleological/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/teleological/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/teleological/subscriptions\",\"organizations_url\":\"https://api.github.com/users/teleological/orgs\",\"repos_url\":\"https://api.github.com/users/teleological/repos\",\"events_url\":\"https://api.github.com/users/teleological/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/teleological/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":{\"login\":\"pixeltrix\",\"id\":6321,\"avatar_url\":\"https://secure.gravatar.com/avatar/b14001f2b40640dd6cb63f0e8f1f4869?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"b14001f2b40640dd6cb63f0e8f1f4869\",\"url\":\"https://api.github.com/users/pixeltrix\",\"html_url\":\"https://github.com/pixeltrix\",\"followers_url\":\"https://api.github.com/users/pixeltrix/followers\",\"following_url\":\"https://api.github.com/users/pixeltrix/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/pixeltrix/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/pixeltrix/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/pixeltrix/subscriptions\",\"organizations_url\":\"https://api.github.com/users/pixeltrix/orgs\",\"repos_url\":\"https://api.github.com/users/pixeltrix/repos\",\"events_url\":\"https://api.github.com/users/pixeltrix/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/pixeltrix/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-15T13:32:58Z\",\"updated_at\":\"2013-05-15T15:23:25Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10634\",\"diff_url\":\"https://github.com/rails/rails/pull/10634.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10634.patch\"},\"body\":\"If Time is assumed to represent a gregorian value (not conspicuously documented, but assumed by Time#to_date in Ruby > 1.8), Time#advance should return a value which is also gregorian. Currently, that is not invariably the case:\\r\\n\\r\\n Time.utc(1582, 10, 15).advance(:days => -1) # => 1582-10-04 00:00:00 UTC\\r\\n\\r\\nIf a resulting Time object with implicit julian date is used in calculations with Time objects with implicit gregorian dates, hijinks ensue:\\r\\n\\r\\n t = Time.utc(1582, 10, 15)\\r\\n distance_of_time_in_words(t - t.advance(:days => -1)) # => \\\"11 days\\\"\\r\\n\\r\\nI'd be glad to backport this fix. In that case ActiveSupport's Time#to_date (for Ruby < 1.9) should also be amended to specify proleptic gregorian for consistent behavior with Ruby 1.9.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10630\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10630/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10630/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10630/events\",\"html_url\":\"https://github.com/rails/rails/issues/10630\",\"id\":14348993,\"number\":10630,\"title\":\"Password Attribute Not Wrapped By Default When Using 'has_secure_password'\",\"user\":{\"login\":\"ksylvest\",\"id\":73432,\"avatar_url\":\"https://secure.gravatar.com/avatar/c78e40f8fc27a048f10ece6956a2fdf2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"c78e40f8fc27a048f10ece6956a2fdf2\",\"url\":\"https://api.github.com/users/ksylvest\",\"html_url\":\"https://github.com/ksylvest\",\"followers_url\":\"https://api.github.com/users/ksylvest/followers\",\"following_url\":\"https://api.github.com/users/ksylvest/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/ksylvest/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/ksylvest/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/ksylvest/subscriptions\",\"organizations_url\":\"https://api.github.com/users/ksylvest/orgs\",\"repos_url\":\"https://api.github.com/users/ksylvest/repos\",\"events_url\":\"https://api.github.com/users/ksylvest/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/ksylvest/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":{\"login\":\"guilleiguaran\",\"id\":160941,\"avatar_url\":\"https://secure.gravatar.com/avatar/73d57855a3bfe5c534596197a895ab6e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"73d57855a3bfe5c534596197a895ab6e\",\"url\":\"https://api.github.com/users/guilleiguaran\",\"html_url\":\"https://github.com/guilleiguaran\",\"followers_url\":\"https://api.github.com/users/guilleiguaran/followers\",\"following_url\":\"https://api.github.com/users/guilleiguaran/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/guilleiguaran/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/guilleiguaran/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/guilleiguaran/subscriptions\",\"organizations_url\":\"https://api.github.com/users/guilleiguaran/orgs\",\"repos_url\":\"https://api.github.com/users/guilleiguaran/repos\",\"events_url\":\"https://api.github.com/users/guilleiguaran/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/guilleiguaran/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-15T08:55:29Z\",\"updated_at\":\"2013-05-16T03:36:57Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Given the following schema, model and controller:\\r\\n\\r\\n```ruby\\r\\nActiveRecord::Schema.define(version: 20130515084505) do\\r\\n create_table \\\"users\\\", force: true do |t|\\r\\n t.string \\\"email\\\"\\r\\n t.string \\\"password_digest\\\"\\r\\n t.datetime \\\"created_at\\\"\\r\\n t.datetime \\\"updated_at\\\"\\r\\n end\\r\\nend\\r\\n\\r\\nclass User < ActiveRecord::Base\\r\\n has_secure_password\\r\\nend\\r\\n\\r\\nclass UsersController < ApplicationController\\r\\n # POST /user\\r\\n def create\\r\\n head :ok\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nAnd posting JSON on the root (with the standard wrap parameters initializer):\\r\\n\\r\\n```bash\\r\\ncurl -v -H \\\"Accept: application/json\\\" -H \\\"Content-type: application/json\\\" -X POST -d ' { \\\"password\\\" : \\\"secret\\\", \\\"email\\\" : \\\"awesome@email.com\\\" }' http://localhost:3000/user\\r\\n```\\r\\n\\r\\nResults in 'password' parameters not getting wrapped:\\r\\n\\r\\n```bash\\r\\nParameters: {\\\"password\\\"=>\\\"[FILTERED]\\\", \\\"email\\\"=>\\\"awesome@email.com\\\", \\\"user\\\"=>{\\\"email\\\"=>\\\"awesome@email.com\\\"}}\\r\\n```\\r\\n\\r\\nExpected:\\r\\n\\r\\n```bash\\r\\nParameters: {\\\"password\\\"=>\\\"[FILTERED]\\\", \\\"email\\\"=>\\\"awesome@email.com\\\", \\\"user\\\"=>{\\\"password\\\"=>\\\"[FILTERED]\\\", \\\"email\\\"=>\\\"awesome@email.com\\\"}}\\r\\n```\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10629\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10629/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10629/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10629/events\",\"html_url\":\"https://github.com/rails/rails/issues/10629\",\"id\":14346310,\"number\":10629,\"title\":\"Fixes bug 10628.\",\"user\":{\"login\":\"stmpjmpr\",\"id\":15185,\"avatar_url\":\"https://secure.gravatar.com/avatar/2b30680beaf816e65dcd384aad8404e9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"2b30680beaf816e65dcd384aad8404e9\",\"url\":\"https://api.github.com/users/stmpjmpr\",\"html_url\":\"https://github.com/stmpjmpr\",\"followers_url\":\"https://api.github.com/users/stmpjmpr/followers\",\"following_url\":\"https://api.github.com/users/stmpjmpr/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/stmpjmpr/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/stmpjmpr/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/stmpjmpr/subscriptions\",\"organizations_url\":\"https://api.github.com/users/stmpjmpr/orgs\",\"repos_url\":\"https://api.github.com/users/stmpjmpr/repos\",\"events_url\":\"https://api.github.com/users/stmpjmpr/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/stmpjmpr/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-15T07:26:27Z\",\"updated_at\":\"2013-05-15T17:58:09Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10629\",\"diff_url\":\"https://github.com/rails/rails/pull/10629.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10629.patch\"},\"body\":\"Railties tests non-existent Rake::Application in some cases. Fixed in this pull request.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10628\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10628/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10628/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10628/events\",\"html_url\":\"https://github.com/rails/rails/issues/10628\",\"id\":14345989,\"number\":10628,\"title\":\"Railties tests non-existent Rake::Application in some cases\",\"user\":{\"login\":\"stmpjmpr\",\"id\":15185,\"avatar_url\":\"https://secure.gravatar.com/avatar/2b30680beaf816e65dcd384aad8404e9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"2b30680beaf816e65dcd384aad8404e9\",\"url\":\"https://api.github.com/users/stmpjmpr\",\"html_url\":\"https://github.com/stmpjmpr\",\"followers_url\":\"https://api.github.com/users/stmpjmpr/followers\",\"following_url\":\"https://api.github.com/users/stmpjmpr/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/stmpjmpr/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/stmpjmpr/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/stmpjmpr/subscriptions\",\"organizations_url\":\"https://api.github.com/users/stmpjmpr/orgs\",\"repos_url\":\"https://api.github.com/users/stmpjmpr/repos\",\"events_url\":\"https://api.github.com/users/stmpjmpr/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/stmpjmpr/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/needs+feedback\",\"name\":\"needs feedback\",\"color\":\"ededed\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-15T07:13:59Z\",\"updated_at\":\"2013-05-15T17:55:25Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"When trying to run tests in RubyMine with Rails 4.0.0-rc1 and ruby 2.0.0-p0, I got the following error:\\r\\n\\r\\n\\r\\nFail to load: /Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/test/test_helper.rb:1\\r\\n Exception message: undefined method `application' for Rake:Module\\r\\n[\\\"/Users/stmpjmpr/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.rc1/lib/rails/test_unit/railtie.rb:1:in `<top (required)>'\\\", \\\"/Users/stmpjmpr/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.rc1/lib/rails/all.rb:11:in `require'\\\", \\\"/Users/stmpjmpr/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.rc1/lib/rails/all.rb:11:in `block in <top (required)>'\\\", \\\"/Users/stmpjmpr/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.rc1/lib/rails/all.rb:9:in `each'\\\", \\\"/Users/stmpjmpr/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.rc1/lib/rails/all.rb:9:in `<top (required)>'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/config/application.rb:3:in `require'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/config/application.rb:3:in `<top (required)>'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/config/environment.rb:2:in `require'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/config/environment.rb:2:in `<top (required)>'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/test/test_helper.rb:5:in `require'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/test/test_helper.rb:5:in `<top (required)>'\\\", \\\"/Applications/RubyMine.app/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:51:in `require'\\\", \\\"/Applications/RubyMine.app/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:51:in `block in require_all_test_scripts'\\\", \\\"/Applications/RubyMine.app/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:44:in `each'\\\", \\\"/Applications/RubyMine.app/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:44:in `require_all_test_scripts'\\\", \\\"/Applications/RubyMine.app/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:134:in `<top (required)>'\\\", \\\"-e:1:in `load'\\\", \\\"-e:1:in `<main>'\\\"]\\r\\n\\r\\nThe file railties-4.0.0.rc1/lib/rails/test_unit/railtie.rb attempts to test Rake::Application, which doesn't exist in all contexts, including mine. I'll submit a pull request with a simple fix.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10627\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10627/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10627/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10627/events\",\"html_url\":\"https://github.com/rails/rails/issues/10627\",\"id\":14343423,\"number\":10627,\"title\":\"change to destructive `deep_symbolize_keys` \",\"user\":{\"login\":\"vipulnsward\",\"id\":567626,\"avatar_url\":\"https://secure.gravatar.com/avatar/f459742822cf8347e83d5c445378a934?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f459742822cf8347e83d5c445378a934\",\"url\":\"https://api.github.com/users/vipulnsward\",\"html_url\":\"https://github.com/vipulnsward\",\"followers_url\":\"https://api.github.com/users/vipulnsward/followers\",\"following_url\":\"https://api.github.com/users/vipulnsward/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/vipulnsward/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/vipulnsward/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/vipulnsward/subscriptions\",\"organizations_url\":\"https://api.github.com/users/vipulnsward/orgs\",\"repos_url\":\"https://api.github.com/users/vipulnsward/repos\",\"events_url\":\"https://api.github.com/users/vipulnsward/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/vipulnsward/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-15T05:06:59Z\",\"updated_at\":\"2013-05-17T03:46:14Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10627\",\"diff_url\":\"https://github.com/rails/rails/pull/10627.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10627.patch\"},\"body\":\"change to destructive `deep_symbolize_keys` after https://github.com/rails/rails/commit/df24b8790f22384a068fece7042f04ffd2fcb33e which allows to do so. \\r\\nThis helps to avoid extra hash object creation, by symbolizing inplace\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10625\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10625/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10625/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10625/events\",\"html_url\":\"https://github.com/rails/rails/issues/10625\",\"id\":14335008,\"number\":10625,\"title\":\"include README in relevant top-level module for RDoc\",\"user\":{\"login\":\"zzak\",\"id\":277819,\"avatar_url\":\"https://secure.gravatar.com/avatar/7fe945668a4fc098e886e20dea71d2ee?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"7fe945668a4fc098e886e20dea71d2ee\",\"url\":\"https://api.github.com/users/zzak\",\"html_url\":\"https://github.com/zzak\",\"followers_url\":\"https://api.github.com/users/zzak/followers\",\"following_url\":\"https://api.github.com/users/zzak/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/zzak/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/zzak/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/zzak/subscriptions\",\"organizations_url\":\"https://api.github.com/users/zzak/orgs\",\"repos_url\":\"https://api.github.com/users/zzak/repos\",\"events_url\":\"https://api.github.com/users/zzak/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/zzak/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":{\"login\":\"fxn\",\"id\":3387,\"avatar_url\":\"https://secure.gravatar.com/avatar/7223c62b7310e164eb79c740188abbda?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"7223c62b7310e164eb79c740188abbda\",\"url\":\"https://api.github.com/users/fxn\",\"html_url\":\"https://github.com/fxn\",\"followers_url\":\"https://api.github.com/users/fxn/followers\",\"following_url\":\"https://api.github.com/users/fxn/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/fxn/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/fxn/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/fxn/subscriptions\",\"organizations_url\":\"https://api.github.com/users/fxn/orgs\",\"repos_url\":\"https://api.github.com/users/fxn/repos\",\"events_url\":\"https://api.github.com/users/fxn/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/fxn/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-14T22:28:06Z\",\"updated_at\":\"2013-05-16T18:40:58Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10625\",\"diff_url\":\"https://github.com/rails/rails/pull/10625.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10625.patch\"},\"body\":\"The purpose for this is to allow users who've installed the RI documentation for rails to view the associated README contents for all available top-level modules. This should work with rdoc 3.9, as well as future releases of rdoc.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10622\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10622/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10622/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10622/events\",\"html_url\":\"https://github.com/rails/rails/issues/10622\",\"id\":14329071,\"number\":10622,\"title\":\"Testing Rails Engines that utilize a database: Rake tasks not copying migrations to dummy.\",\"user\":{\"login\":\"blischalk\",\"id\":947657,\"avatar_url\":\"https://secure.gravatar.com/avatar/f87171d5254bb42711ee34dc4f04a626?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f87171d5254bb42711ee34dc4f04a626\",\"url\":\"https://api.github.com/users/blischalk\",\"html_url\":\"https://github.com/blischalk\",\"followers_url\":\"https://api.github.com/users/blischalk/followers\",\"following_url\":\"https://api.github.com/users/blischalk/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/blischalk/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/blischalk/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/blischalk/subscriptions\",\"organizations_url\":\"https://api.github.com/users/blischalk/orgs\",\"repos_url\":\"https://api.github.com/users/blischalk/repos\",\"events_url\":\"https://api.github.com/users/blischalk/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/blischalk/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/engines\",\"name\":\"engines\",\"color\":\"e102d8\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-14T20:18:10Z\",\"updated_at\":\"2013-05-14T20:32:55Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Using Rails Rails 4.0.0.rc1...\\r\\n\\r\\nWhen a Rails Engine is generated using the full or mountable flag and a model with a backing migration is created, the rake tasks to copy the migrations fail to copy them into the test/dummy app. Here are the steps I have been following:\\r\\n\\r\\n```\\r\\nrails plugin new example --mountable\\r\\nrails g model user name:string\\r\\ncd test/dummy\\r\\n```\\r\\n\\r\\nThe below commands fail:\\r\\nrake example_engine:install:migrations => 'Don't know how to build task'\\r\\nrake app:example_engine:install:migrations => 'Don't know how to build task'\\r\\nrake app:install:migrations => 'Don't know how to build task'\\r\\n\\r\\n\\r\\nIt seems that the rake tasks aren't available for copying migrations to a dummy app as they would be for a host app.\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10621\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10621/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10621/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10621/events\",\"html_url\":\"https://github.com/rails/rails/issues/10621\",\"id\":14328621,\"number\":10621,\"title\":\"has_one with includes excludes limit 1 from resulting query\",\"user\":{\"login\":\"JangoSteve\",\"id\":93607,\"avatar_url\":\"https://secure.gravatar.com/avatar/ca46a3d7ca39aae7b2b27526d0ad64f0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"ca46a3d7ca39aae7b2b27526d0ad64f0\",\"url\":\"https://api.github.com/users/JangoSteve\",\"html_url\":\"https://github.com/JangoSteve\",\"followers_url\":\"https://api.github.com/users/JangoSteve/followers\",\"following_url\":\"https://api.github.com/users/JangoSteve/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/JangoSteve/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/JangoSteve/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/JangoSteve/subscriptions\",\"organizations_url\":\"https://api.github.com/users/JangoSteve/orgs\",\"repos_url\":\"https://api.github.com/users/JangoSteve/repos\",\"events_url\":\"https://api.github.com/users/JangoSteve/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/JangoSteve/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-14T20:07:45Z\",\"updated_at\":\"2013-05-14T20:07:45Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"*Note: This may not actually be a bug, but just a limitation of includes; if so, feel free to close this, but I figured it'd be good to write it down anyway since it's not in the documentation and someone else may search for this issue.*\\r\\n\\r\\nThis seems to effect the latest 3-2-stable branch of rails as of right now. I have the following:\\r\\n\\r\\n```ruby\\r\\nclass User < ActiveRecord::Base\\r\\n has_one :latest_thing, :class_name => 'Thing'\\r\\nend\\r\\n\\r\\nclass Thing < ActiveRecord::Base\\r\\nend\\r\\n```\\r\\n\\r\\nIf I then run:\\r\\n\\r\\n```ruby\\r\\nUser.includes(:latest_thing).first\\r\\n```\\r\\n\\r\\nI get the following SQL (I'm using the postgres adapter, I'm not sure if this is specific to that or not):\\r\\n\\r\\n```\\r\\nUser Load (0.2ms) SELECT \\\"users\\\".* FROM \\\"users\\\" LIMIT 1\\r\\n Thing Load (25.3ms) SELECT \\\"things\\\".* FROM \\\"things\\\" WHERE \\\"things\\\".\\\"user_id\\\" IN (1)\\r\\n```\\r\\n\\r\\nNotice there is no `LIMIT 1` included in the Thing query as would be expected. Alternatively, if I do this instead:\\r\\n\\r\\n```ruby\\r\\nUser.first.latest_thing\\r\\n```\\r\\n\\r\\nI now get the expected SQL:\\r\\n\\r\\n```\\r\\n User Load (0.3ms) SELECT \\\"users\\\".* FROM \\\"users\\\" LIMIT 1\\r\\n Thing Load (0.3ms) SELECT \\\"things\\\".* FROM \\\"things\\\" WHERE \\\"things\\\".\\\"user_id\\\" = 3 LIMIT 1\\r\\n```\\r\\n\\r\\nThe reason this may be a limitation rather than a bug is that, it wouldn't be possible have `LIMIT 1` included in the SQL when writing the query with the `includes` method, since at the time in the Arel chain that `includes` is called, Arel wouldn't yet know that `find` is about to be called, as opposed to some other query that could be searching for multiple records of the parent association.\\r\\n\\r\\nFor example:\\r\\n\\r\\n```ruby\\r\\nUser.includes(:latest_thing).limit(10)\\r\\n```\\r\\n\\r\\nIf the above included `LIMIT 1` in the `Thing` SQL, then we'd only have the `latest_thing` loaded for one of the users.\\r\\n\\r\\nBut the current implementation is problematic because it will actually result in a query that loads *all things* for those 10 users, and instantiates them into an array of Thing objects for all of those things, which means we now have a deceptive query that could be very slow if those 10 users have something like 10,000 things between them that will all get instantiated now into Ruby objects. For us, it was the difference between a 100ms and 2,000ms in our view rendering.\\r\\n\\r\\nAgain, this may not be something that we'd even want to solve for in Arel, as I would expect it's just a limitation of using `includes` (considering the correct behavior would be a complex query that groups `things` on `user_id` and selects only one per group), meaning it just shouldn't be used in this scenario. But it seems like it should be mentioned [in the docs](http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations) for eager loading. I can add a small note about it, but wanted to do a sanity check before doing it and making sure this wasn't an unintentional bug in Rails first.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10615\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10615/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10615/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10615/events\",\"html_url\":\"https://github.com/rails/rails/issues/10615\",\"id\":14305157,\"number\":10615,\"title\":\"Probably AR #joins method shouldn't mark object as readonly\",\"user\":{\"login\":\"prijutme4ty\",\"id\":814984,\"avatar_url\":\"https://secure.gravatar.com/avatar/fe1c0797f345249625590d25a51efd0a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"fe1c0797f345249625590d25a51efd0a\",\"url\":\"https://api.github.com/users/prijutme4ty\",\"html_url\":\"https://github.com/prijutme4ty\",\"followers_url\":\"https://api.github.com/users/prijutme4ty/followers\",\"following_url\":\"https://api.github.com/users/prijutme4ty/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/prijutme4ty/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/prijutme4ty/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/prijutme4ty/subscriptions\",\"organizations_url\":\"https://api.github.com/users/prijutme4ty/orgs\",\"repos_url\":\"https://api.github.com/users/prijutme4ty/repos\",\"events_url\":\"https://api.github.com/users/prijutme4ty/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/prijutme4ty/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-14T11:25:41Z\",\"updated_at\":\"2013-05-14T11:27:27Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"(Rails version 3.2.13)\\r\\nWhen one create scope with `#joins`, its results marked as readonly unless `#select` clause explicitly specified or called `.readonly(false)`.\\r\\nIt looks as this behavior came from the past and not yet necessary\\r\\n\\r\\n class Order < ActiveRecord::Base\\r\\n has_and_belongs_to_many :executors, class_name: 'Specialist', join_table: 'order_executors'\\r\\n scope :by_executor, ->(executor_id) { joins(:executors).where(specialists: {id: executor_id} ) }\\r\\n end\\r\\n\\r\\n orders = Order.by_executor(1)\\r\\n\\r\\n Order Load (2.0ms) SELECT \\\"orders\\\".* FROM \\\"orders\\\" INNER JOIN \\\"order_executors\\\" ON \\\"order_executors\\\".\\\"order_id\\\" = \\\"orders\\\".\\\"id\\\" INNER JOIN \\\"specialists\\\" ON \\\"specialists\\\".\\\"id\\\" = \\\"order_executors\\\".\\\"specialist_id\\\" WHERE \\\"specialists\\\".\\\"id\\\" = 1\\r\\n => [#<Order id: 20, orderable_id: 11, orderable_type: \\\"PlanDevelopment\\\", client_id: 1, completion_status: \\\"finished\\\", created_at: \\\"2013-05-13 20:48:19\\\", updated_at: \\\"2013-05-14 00:36:38\\\", price: #<BigDecimal:67e5898,'0.14E2',9(36)>>]\\r\\n \\r\\n orders.first.specialist_id # raises undefined method specialist_id\\r\\n orders.select(\\\"orders.*, order_executors.id\\\").first.specialist_id # gives specialist_id value\\r\\n\\r\\nI read (http://apidock.com/rails/ActiveRecord/Base/find/class) rationalies about it:\\r\\n:joins - Either an SQL fragment for additional joins like \\\"LEFT JOIN comments ON comments.post_id = id\\\" (rarely needed), named associations in the same form used for the :include option, which will perform an INNER JOIN on the associated table(s), or an array containing a mixture of both strings and named associations. If the value is a string, then the records will be returned read-only since they will have attributes that do not correspond to the table\xE2\x80\x99s columns. Pass :readonly =&gt; false to override.\\r\\n\\r\\nBut this apidock is about rails-2.3.8 and it looks that now there're no improper columns in loaded record.\\r\\nMoreover the problem which was solved by readonly exists in case when `#select` with additional options used - because it can add attributes that don't correspond to any columns. But select removes flag. And without explicit `#select` clause there are no dangers to make record not readonly.\\r\\n\\r\\nI think at least readonly flag should be disabled on joins. And possibly it should be turned on expicit selects.\\r\\n\\r\\nAlso see \\r\\nhttps://groups.google.com/forum/?fromgroups=#!topic/rubyonrails-talk/Y_dPVn16Ptw\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10614\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10614/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10614/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10614/events\",\"html_url\":\"https://github.com/rails/rails/issues/10614\",\"id\":14301396,\"number\":10614,\"title\":\"update_attribute saves UNSAVED objects without performing validations\",\"user\":{\"login\":\"NielsKSchjoedt\",\"id\":570755,\"avatar_url\":\"https://secure.gravatar.com/avatar/7c22112f078c2fe8398fd460fc4be450?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"7c22112f078c2fe8398fd460fc4be450\",\"url\":\"https://api.github.com/users/NielsKSchjoedt\",\"html_url\":\"https://github.com/NielsKSchjoedt\",\"followers_url\":\"https://api.github.com/users/NielsKSchjoedt/followers\",\"following_url\":\"https://api.github.com/users/NielsKSchjoedt/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/NielsKSchjoedt/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/NielsKSchjoedt/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/NielsKSchjoedt/subscriptions\",\"organizations_url\":\"https://api.github.com/users/NielsKSchjoedt/orgs\",\"repos_url\":\"https://api.github.com/users/NielsKSchjoedt/repos\",\"events_url\":\"https://api.github.com/users/NielsKSchjoedt/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/NielsKSchjoedt/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":4,\"created_at\":\"2013-05-14T09:27:17Z\",\"updated_at\":\"2013-05-14T12:34:38Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Consider the following situation:\\r\\n\\r\\nYou have a model called `Car`, that you instantiate like so: `car = Car.new`. On the car you have a some validations for some attrs e.g. brand and model_name, that must be set. By mistake you call `car.update_attribute(:engine_size, 1.9)` somewhere in the code BEFORE the car has actually been saved to the db, and those attributes (brand and model_name has been assigned). What then happens is that the WHOLE car object is saved to the database in the current state without performing any validations or anything.\\r\\n\\r\\nI know that update_attribute is supposed to fire a directly at the database, but I think it's VERY counter intuitive and dangerous, that you are able to do that before the object has been persisted. Think about it, you call `car.update_attribute(:engine_size, 1.9)` and expect it to juts update the attribute that you explicitly specify, but behind the scene it actually saves the whole object completely unsafe. What would be more logical would be one of the following 2 solutions:\\r\\n\\r\\n1. When calling update_attribute on an object which is not persisted, an error should be raised \\\"You cannot update an attribute of an object, which has not yet been saved\\\"\\r\\n\\r\\n2. Or alternatively the attribute that you wanna update is just updated in-memory, since the object it self is not yet stored.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10613\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10613/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10613/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10613/events\",\"html_url\":\"https://github.com/rails/rails/issues/10613\",\"id\":14300784,\"number\":10613,\"title\":\"undefined method `sql_type' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::ColumnDefinition>\",\"user\":{\"login\":\"mountriv99\",\"id\":584545,\"avatar_url\":\"https://secure.gravatar.com/avatar/96be7bbe9c8204035552ee4dd45bb378?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"96be7bbe9c8204035552ee4dd45bb378\",\"url\":\"https://api.github.com/users/mountriv99\",\"html_url\":\"https://github.com/mountriv99\",\"followers_url\":\"https://api.github.com/users/mountriv99/followers\",\"following_url\":\"https://api.github.com/users/mountriv99/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/mountriv99/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/mountriv99/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/mountriv99/subscriptions\",\"organizations_url\":\"https://api.github.com/users/mountriv99/orgs\",\"repos_url\":\"https://api.github.com/users/mountriv99/repos\",\"events_url\":\"https://api.github.com/users/mountriv99/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/mountriv99/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/needs+feedback\",\"name\":\"needs feedback\",\"color\":\"ededed\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":9,\"created_at\":\"2013-05-14T09:10:05Z\",\"updated_at\":\"2013-05-20T18:15:47Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Got an undefined method 'sql_type' error when I tried to run my tests after upgrading from an alpha version of Rails 4 to Rails 4.0 rc1\\r\\n\\r\\nFULL TRACE:\\r\\n\\r\\n\\teric@ubuntu:~/apps/pc$ bundle exec rake test:models --trace\\r\\n\\t** Invoke test:models (first_time)\\r\\n\\t** Invoke test:prepare (first_time)\\r\\n\\t** Invoke db:test:prepare (first_time)\\r\\n\\t** Execute db:test:prepare\\r\\n\\t** Invoke db:test:load (first_time)\\r\\n\\t** Invoke db:test:purge (first_time)\\r\\n\\t** Invoke environment (first_time)\\r\\n\\t** Execute environment\\r\\n\\t** Invoke db:load_config (first_time)\\r\\n\\t** Execute db:load_config\\r\\n\\t** Execute db:test:purge\\r\\n\\t** Execute db:test:load\\r\\n\\t** Invoke db:test:load_schema (first_time)\\r\\n\\t** Invoke db:test:purge \\r\\n\\t** Execute db:test:load_schema\\r\\n\\t** Invoke db:schema:load (first_time)\\r\\n\\t** Invoke environment \\r\\n\\t** Invoke db:load_config \\r\\n\\t** Execute db:schema:load\\r\\n\\trake aborted!\\r\\n\\tundefined method `sql_type' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::ColumnDefinition:0xa524cac>\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/quoting.rb:106:in `type_cast'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/cast.rb:76:in `block in array_to_string'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/cast.rb:71:in `map'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/cast.rb:71:in `array_to_string'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/quoting.rb:35:in `quote'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract/schema_statements.rb:698:in `add_column_options!'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:168:in `add_column_options!'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:31:in `add_column_options!'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:135:in `visit_ColumnDefinition'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:14:in `visit_ColumnDefinition'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:116:in `accept'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:142:in `block in visit_TableDefinition'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:142:in `map'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:142:in `visit_TableDefinition'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:116:in `accept'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract/schema_statements.rb:190:in `create_table'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:622:in `block in method_missing'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:594:in `block in say_with_time'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/benchmark.rb:280:in `measure'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:594:in `say_with_time'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:614:in `method_missing'\\r\\n\\t/home/eric/apps/pc/db/schema.rb:233:in `block in <top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/schema.rb:42:in `instance_eval'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/schema.rb:42:in `define'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/schema.rb:62:in `define'\\r\\n\\t/home/eric/apps/pc/db/schema.rb:14:in `<top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:222:in `load'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:222:in `block in load'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:213:in `load_dependency'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:222:in `load'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/railties/databases.rake:253:in `block (3 levels) in <top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `call'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/railties/databases.rake:326:in `block (3 levels) in <top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `call'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/railties/databases.rake:316:in `block (3 levels) in <top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `call'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:205:in `block in invoke_prerequisites'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:203:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:203:in `invoke_prerequisites'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:183:in `block in invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:205:in `block in invoke_prerequisites'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:203:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:203:in `invoke_prerequisites'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:183:in `block in invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:143:in `invoke_task'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:101:in `block (2 levels) in top_level'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:101:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:101:in `block in top_level'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:110:in `run_with_threads'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:95:in `top_level'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:73:in `block in run'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:70:in `run'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/bin/rake:33:in `<top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/bin/rake:23:in `load'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/bin/rake:23:in `<main>'\\r\\n\\tTasks: TOP => db:schema:load\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10607\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10607/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10607/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10607/events\",\"html_url\":\"https://github.com/rails/rails/issues/10607\",\"id\":14288854,\"number\":10607,\"title\":\"Error using time_ago_in_words\",\"user\":{\"login\":\"brunosiqueira\",\"id\":28031,\"avatar_url\":\"https://secure.gravatar.com/avatar/1bf1443ad6107fd56d3a48cfc6687f1f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"1bf1443ad6107fd56d3a48cfc6687f1f\",\"url\":\"https://api.github.com/users/brunosiqueira\",\"html_url\":\"https://github.com/brunosiqueira\",\"followers_url\":\"https://api.github.com/users/brunosiqueira/followers\",\"following_url\":\"https://api.github.com/users/brunosiqueira/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/brunosiqueira/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/brunosiqueira/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/brunosiqueira/subscriptions\",\"organizations_url\":\"https://api.github.com/users/brunosiqueira/orgs\",\"repos_url\":\"https://api.github.com/users/brunosiqueira/repos\",\"events_url\":\"https://api.github.com/users/brunosiqueira/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/brunosiqueira/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/3-2-stable\",\"name\":\"3-2-stable\",\"color\":\"02d7e1\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/actionview\",\"name\":\"actionview\",\"color\":\"d7e102\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-14T00:34:55Z\",\"updated_at\":\"2013-05-14T01:30:00Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"After upgrading to rails 3.2.13, I started getting the follwing in every view I user the helper time_ago_in_words:\\r\\n\\r\\nActionView::Template::Error (wrong number of arguments (4 for 3)):\\r\\n\\r\\nI suspect that it has something too do with the change of argument numbers of the method distance_of_time_in_words\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10605\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10605/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10605/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10605/events\",\"html_url\":\"https://github.com/rails/rails/issues/10605\",\"id\":14284043,\"number\":10605,\"title\":\"Postgresql UUID primary key not defaulting to using uuid_generate_v4() in test environment...\",\"user\":{\"login\":\"interhive\",\"id\":8636,\"avatar_url\":\"https://secure.gravatar.com/avatar/c27672db6d3cd5cdc5b93ce2c86de4c8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"c27672db6d3cd5cdc5b93ce2c86de4c8\",\"url\":\"https://api.github.com/users/interhive\",\"html_url\":\"https://github.com/interhive\",\"followers_url\":\"https://api.github.com/users/interhive/followers\",\"following_url\":\"https://api.github.com/users/interhive/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/interhive/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/interhive/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/interhive/subscriptions\",\"organizations_url\":\"https://api.github.com/users/interhive/orgs\",\"repos_url\":\"https://api.github.com/users/interhive/repos\",\"events_url\":\"https://api.github.com/users/interhive/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/interhive/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/4-0-stable\",\"name\":\"4-0-stable\",\"color\":\"fbca04\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/master\",\"name\":\"master\",\"color\":\"0052cc\"}],\"state\":\"open\",\"assignee\":{\"login\":\"tenderlove\",\"id\":3124,\"avatar_url\":\"https://secure.gravatar.com/avatar/f29327647a9cff5c69618bae420792ea?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f29327647a9cff5c69618bae420792ea\",\"url\":\"https://api.github.com/users/tenderlove\",\"html_url\":\"https://github.com/tenderlove\",\"followers_url\":\"https://api.github.com/users/tenderlove/followers\",\"following_url\":\"https://api.github.com/users/tenderlove/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/tenderlove/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/tenderlove/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/tenderlove/subscriptions\",\"organizations_url\":\"https://api.github.com/users/tenderlove/orgs\",\"repos_url\":\"https://api.github.com/users/tenderlove/repos\",\"events_url\":\"https://api.github.com/users/tenderlove/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/tenderlove/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":9,\"created_at\":\"2013-05-13T21:57:00Z\",\"updated_at\":\"2013-05-16T20:57:07Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I'm running Rails 4.0.0.rc1 and have a table that uses UUID as primary key:\\r\\n\\r\\n```ruby\\r\\nclass CreateWebLinks < ActiveRecord::Migration\\r\\n def change\\r\\n create_table :web_links, id: :uuid do |t|\\r\\n t.boolean :active, default: true\\r\\n t.string :url, null: false, default: \\\"http://\\\"\\r\\n t.string :title, null: false, default: \\\"\\\"\\r\\n t.string :description\\r\\n t.timestamps\\r\\n end\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nWhen running migrations, the development database sets the default value to use PG's uuid_generate_v4() function to create the ID within the database.\\r\\n\\r\\nI have not been able to get the test database to perform similarly. The ID is created and is denoted as UUID. However, the default value of 'uuid_generate_v4()' is not set in the database.\\r\\n\\r\\nI've tried blowing the test database away, rake test:prepare and rake db:migrate RAILS_ENV=test. Can't seem to get it working and tests are failing as a result.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10604\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10604/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10604/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10604/events\",\"html_url\":\"https://github.com/rails/rails/issues/10604\",\"id\":14283592,\"number\":10604,\"title\":\"Do not invoke callbacks when delete_all is called\",\"user\":{\"login\":\"neerajdotname\",\"id\":6399,\"avatar_url\":\"https://secure.gravatar.com/avatar/934f858e451cf9b771996b2940cd696b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"934f858e451cf9b771996b2940cd696b\",\"url\":\"https://api.github.com/users/neerajdotname\",\"html_url\":\"https://github.com/neerajdotname\",\"followers_url\":\"https://api.github.com/users/neerajdotname/followers\",\"following_url\":\"https://api.github.com/users/neerajdotname/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/neerajdotname/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/neerajdotname/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/neerajdotname/subscriptions\",\"organizations_url\":\"https://api.github.com/users/neerajdotname/orgs\",\"repos_url\":\"https://api.github.com/users/neerajdotname/repos\",\"events_url\":\"https://api.github.com/users/neerajdotname/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/neerajdotname/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-13T21:46:38Z\",\"updated_at\":\"2013-05-13T21:46:38Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10604\",\"diff_url\":\"https://github.com/rails/rails/pull/10604.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10604.patch\"},\"body\":\"Method `delete_all` should not be invoking callbacks and this\\r\\nfeature was deprecated in Rails 4.0. This is being removed.\\r\\n`delete_all` will continue to honor the `:dependent` option. However\\r\\nif `:dependent` value is `:destroy` then the default deletion\\r\\nstrategy for that collection will be applied.\\r\\n\\r\\nUser can also force a deletion strategy by passing parameter to\\r\\n`delete_all`. For example you can do `@post.comments.delete_all(:nullify)`\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10595\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10595/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10595/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10595/events\",\"html_url\":\"https://github.com/rails/rails/issues/10595\",\"id\":14256840,\"number\":10595,\"title\":\"Extended method DateTime#<=> can accept nil\",\"user\":{\"login\":\"Soylent\",\"id\":1593860,\"avatar_url\":\"https://secure.gravatar.com/avatar/7a00609d99319bf350280c1a1b3c7214?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"7a00609d99319bf350280c1a1b3c7214\",\"url\":\"https://api.github.com/users/Soylent\",\"html_url\":\"https://github.com/Soylent\",\"followers_url\":\"https://api.github.com/users/Soylent/followers\",\"following_url\":\"https://api.github.com/users/Soylent/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/Soylent/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/Soylent/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/Soylent/subscriptions\",\"organizations_url\":\"https://api.github.com/users/Soylent/orgs\",\"repos_url\":\"https://api.github.com/users/Soylent/repos\",\"events_url\":\"https://api.github.com/users/Soylent/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/Soylent/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-13T11:54:06Z\",\"updated_at\":\"2013-05-13T12:10:44Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10595\",\"diff_url\":\"https://github.com/rails/rails/pull/10595.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10595.patch\"},\"body\":\"Bug: extended method DateTime#<=> does not accept nil\\r\\n\\r\\nThis causes the following problem:\\r\\n\\r\\n```\\r\\n% rails console\\r\\nirb(main):001:0> (Time.now..Time.now).cover? nil\\r\\nNoMethodError: undefined method `to_datetime' for nil:NilClass\\r\\n\\tfrom /Users/Soilent/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-b44f086cf105/activesupport/lib/active_support/core_ext/date_time/calculations.rb:162:in `<=>'\\r\\n\\tfrom /Users/Soilent/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-b44f086cf105/activesupport/lib/active_support/core_ext/time/calculations.rb:269:in `compare_with_coercion'\\r\\n\\tfrom (irb):1:in `cover?'\\r\\n\\tfrom (irb):1\\r\\n\\tfrom /Users/Soilent/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-b44f086cf105/railties/lib/rails/commands/console.rb:90:in `start'\\r\\n\\tfrom /Users/Soilent/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-b44f086cf105/railties/lib/rails/commands/console.rb:9:in `start'\\r\\n\\tfrom /Users/Soilent/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-b44f086cf105/railties/lib/rails/commands.rb:66:in `<top (required)>'\\r\\n\\tfrom bin/rails:4:in `require'\\r\\n\\tfrom bin/rails:4:in `<main>'\\r\\n```\\r\\n\\r\\nOriginal method DateTime#<=> accepts nil, and this problem does not happen:\\r\\n```\\r\\n% irb\\r\\nirb(main):001:0> require 'date'\\r\\n=> true\\r\\nirb(main):002:0> (Time.now..Time.now).cover? nil\\r\\n=> false\\r\\nirb(main):003:0> DateTime.new <=> nil\\r\\n=> nil\\r\\n```\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10593\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10593/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10593/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10593/events\",\"html_url\":\"https://github.com/rails/rails/issues/10593\",\"id\":14254044,\"number\":10593,\"title\":\"Inclusion/exclusion validator does not work as expected with ranges of strings/symbols\",\"user\":{\"login\":\"jeroenj\",\"id\":76424,\"avatar_url\":\"https://secure.gravatar.com/avatar/ed50ffc70effe033a813064308686440?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"ed50ffc70effe033a813064308686440\",\"url\":\"https://api.github.com/users/jeroenj\",\"html_url\":\"https://github.com/jeroenj\",\"followers_url\":\"https://api.github.com/users/jeroenj/followers\",\"following_url\":\"https://api.github.com/users/jeroenj/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jeroenj/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jeroenj/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jeroenj/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jeroenj/orgs\",\"repos_url\":\"https://api.github.com/users/jeroenj/repos\",\"events_url\":\"https://api.github.com/users/jeroenj/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jeroenj/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-13T10:21:19Z\",\"updated_at\":\"2013-05-13T10:21:19Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"The inclusion/exclusion validator will incorrectly mark values as valid when used with ranges of strings/symbols.\\r\\n\\r\\nExample:\\r\\n```ruby\\r\\nclass Certificate < ActiveRecord::Base\\r\\n attribute :color # which is a letter from :D to :M\\r\\n validates :color, inclusion: {in: :D..:M}\\r\\nend\\r\\n\\r\\nc = Certificate.new color: :F\\r\\nc.valid?\\r\\n# => true\\r\\n\\r\\nc = Certificate.new color: :FG\\r\\nc.valid?\\r\\n# => true\\r\\n```\\r\\n\\r\\nOne would expect `:FG` to be invalid. However it is valid because `:D..:M` is a range. For ranges the `#cover?` method will be used (https://github.com/rails/rails/blob/master/activemodel/lib/active_model/validations/clusivity.rb#L37).\\r\\n\\r\\nSo:\\r\\n```ruby\\r\\n(:D..:M).include? :F\\r\\n# => true\\r\\n\\r\\n(:D..:M).cover? :F\\r\\n# => true\\r\\n\\r\\n(:D..:M).include? :FG\\r\\n# => false\\r\\n\\r\\n(:D..:M).cover? :FG\\r\\n# => true\\r\\n```\\r\\n\\r\\nThis is because the `#cover?` method compares the value against the first and last values of the range.\\r\\nFor validations it make sense to use `#cover?` when the range numbers. But it doesn't make sense when the range contains strings or symbols (or any other non-numeric value).\\r\\n\\r\\nA solution would be to check it the range is numeric, and if it is to use `#cover?`, if not `#include?`. I'm not sure if that is the best approach. I'm open for ideas and I'll see if I can create a patch for this issue.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10589\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10589/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10589/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10589/events\",\"html_url\":\"https://github.com/rails/rails/issues/10589\",\"id\":14248862,\"number\":10589,\"title\":\"Make AR::Base#changed_attributes to return indifferent hash\",\"user\":{\"login\":\"bogdan\",\"id\":122436,\"avatar_url\":\"https://secure.gravatar.com/avatar/91913f6ab8085bab0f2aa43995ba8ca2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"91913f6ab8085bab0f2aa43995ba8ca2\",\"url\":\"https://api.github.com/users/bogdan\",\"html_url\":\"https://github.com/bogdan\",\"followers_url\":\"https://api.github.com/users/bogdan/followers\",\"following_url\":\"https://api.github.com/users/bogdan/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/bogdan/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/bogdan/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/bogdan/subscriptions\",\"organizations_url\":\"https://api.github.com/users/bogdan/orgs\",\"repos_url\":\"https://api.github.com/users/bogdan/repos\",\"events_url\":\"https://api.github.com/users/bogdan/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/bogdan/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-13T07:46:37Z\",\"updated_at\":\"2013-05-13T15:02:53Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10589\",\"diff_url\":\"https://github.com/rails/rails/pull/10589.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10589.patch\"},\"body\":\"`changed_attributes` hash with symbols as keys has better semantics.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10583\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10583/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10583/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10583/events\",\"html_url\":\"https://github.com/rails/rails/issues/10583\",\"id\":14240948,\"number\":10583,\"title\":\"Polymorphic join validation error on create\",\"user\":{\"login\":\"jwaldrip\",\"id\":43164,\"avatar_url\":\"https://secure.gravatar.com/avatar/ca94b06e32f746968f0aec970a702a0c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"ca94b06e32f746968f0aec970a702a0c\",\"url\":\"https://api.github.com/users/jwaldrip\",\"html_url\":\"https://github.com/jwaldrip\",\"followers_url\":\"https://api.github.com/users/jwaldrip/followers\",\"following_url\":\"https://api.github.com/users/jwaldrip/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jwaldrip/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jwaldrip/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jwaldrip/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jwaldrip/orgs\",\"repos_url\":\"https://api.github.com/users/jwaldrip/repos\",\"events_url\":\"https://api.github.com/users/jwaldrip/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jwaldrip/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-12T22:33:17Z\",\"updated_at\":\"2013-05-16T04:50:37Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I can seem to get this one to work. I keep getting validation errors when trying to create objects via the association.\\r\\n\\r\\n***ERROR***\\r\\n```\\r\\n[6] pry(main)> Account.first.users.create!\\r\\n Account Load (0.6ms) SELECT \\\"account\\\".* FROM \\\"account\\\" ORDER BY \\\"account\\\".\\\"id\\\" ASC LIMIT 1\\r\\n (0.2ms) BEGIN\\r\\n (0.2ms) ROLLBACK\\r\\nActiveRecord::RecordInvalid: Validation failed: Account can't be blank\\r\\nfrom /Users/jwaldrip/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/activerecord-4.0.0.rc1/lib/active_record/validations.rb:57:in `save!'\\r\\n```\\r\\n\\r\\n***CODE***\\r\\n\\r\\n```ruby\\r\\nclass Account < ActiveRecord::Base\\r\\n\\r\\n has_many :permitted_permissions, class_name: 'Permission', as: :permissible, inverse_of: :permissible\\r\\n has_many :users, through: :permitted_permissions, source: :accessible, source_type: 'User', inverse_of: :account\\r\\n\\r\\nend\\r\\n\\r\\nclass User < ActiveRecord::Base\\r\\n\\r\\n has_one :account_accessible_permission, class_name: 'Permission', as: :accessible, inverse_of: :accessible\\r\\n has_one :account, through: :account_accessible_permission, source: :permissible, source_type: 'Account', inverse_of: :users\\r\\n\\r\\n validates_presence_of :account\\r\\n\\r\\nend\\r\\n\\r\\nclass Permission < ActiveRecord::Base\\r\\n\\r\\n validates_uniqueness_of :accessible_id, scope: [:accessible_type, :permissible_id, :permissible_type]\\r\\n\\r\\n belongs_to :permissible, polymorphic: true\\r\\n belongs_to :accessible, polymorphic: true\\r\\n\\r\\nend\\r\\n\\r\\n```\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10582\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10582/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10582/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10582/events\",\"html_url\":\"https://github.com/rails/rails/issues/10582\",\"id\":14240684,\"number\":10582,\"title\":\"Sprockets under Ruby 2.0 and Rails 4.0rc1 ignores environment assets.precompile path appends\",\"user\":{\"login\":\"jim-12gigs\",\"id\":871535,\"avatar_url\":\"https://secure.gravatar.com/avatar/e1f8caca4517e7fefbbd13ad0ebe741a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"e1f8caca4517e7fefbbd13ad0ebe741a\",\"url\":\"https://api.github.com/users/jim-12gigs\",\"html_url\":\"https://github.com/jim-12gigs\",\"followers_url\":\"https://api.github.com/users/jim-12gigs/followers\",\"following_url\":\"https://api.github.com/users/jim-12gigs/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jim-12gigs/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jim-12gigs/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jim-12gigs/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jim-12gigs/orgs\",\"repos_url\":\"https://api.github.com/users/jim-12gigs/repos\",\"events_url\":\"https://api.github.com/users/jim-12gigs/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jim-12gigs/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/asset+pipeline\",\"name\":\"asset pipeline\",\"color\":\"d7e102\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":{\"url\":\"https://api.github.com/repos/rails/rails/milestones/9\",\"labels_url\":\"https://api.github.com/repos/rails/rails/milestones/9/labels\",\"id\":44893,\"number\":9,\"title\":\"4.0.0\",\"description\":\"Changes that break 3.x API.\",\"creator\":{\"login\":\"jeremy\",\"id\":199,\"avatar_url\":\"https://secure.gravatar.com/avatar/24d2f8804e6bb4b7ea6bd11e0a586470?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"24d2f8804e6bb4b7ea6bd11e0a586470\",\"url\":\"https://api.github.com/users/jeremy\",\"html_url\":\"https://github.com/jeremy\",\"followers_url\":\"https://api.github.com/users/jeremy/followers\",\"following_url\":\"https://api.github.com/users/jeremy/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jeremy/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jeremy/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jeremy/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jeremy/orgs\",\"repos_url\":\"https://api.github.com/users/jeremy/repos\",\"events_url\":\"https://api.github.com/users/jeremy/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jeremy/received_events\",\"type\":\"User\"},\"open_issues\":3,\"closed_issues\":89,\"state\":\"open\",\"created_at\":\"2011-10-09T02:53:46Z\",\"updated_at\":\"2013-05-16T20:08:49Z\",\"due_on\":null},\"comments\":5,\"created_at\":\"2013-05-12T22:07:52Z\",\"updated_at\":\"2013-05-15T19:15:30Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"This line is ignored in config/environments/production.rb, but works in application.rb. \\r\\n\\r\\nconfig.assets.precompile += %w(vendor/*')\\r\\n\\r\\nSprockets also fails to compile jquery-ui images in vendor/assets/stylesheets/images no matter where you put this line.\\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10579\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10579/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10579/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10579/events\",\"html_url\":\"https://github.com/rails/rails/issues/10579\",\"id\":14237302,\"number\":10579,\"title\":\"Test two databases - throw error at rollback between test cases.\",\"user\":{\"login\":\"cchavez\",\"id\":913511,\"avatar_url\":\"https://secure.gravatar.com/avatar/8ad2db037ea091f2b69e0a52c50a6894?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"8ad2db037ea091f2b69e0a52c50a6894\",\"url\":\"https://api.github.com/users/cchavez\",\"html_url\":\"https://github.com/cchavez\",\"followers_url\":\"https://api.github.com/users/cchavez/followers\",\"following_url\":\"https://api.github.com/users/cchavez/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/cchavez/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/cchavez/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/cchavez/subscriptions\",\"organizations_url\":\"https://api.github.com/users/cchavez/orgs\",\"repos_url\":\"https://api.github.com/users/cchavez/repos\",\"events_url\":\"https://api.github.com/users/cchavez/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/cchavez/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-12T17:19:04Z\",\"updated_at\":\"2013-05-12T17:22:42Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Hi all.\\r\\n\\r\\nI have a application that use two database and the application works fine, I'm writing test cases and I have the issue when I have multiple test cases in the same file I got the following error:\\r\\n\\r\\n Failure/Error: Unable to find matching line from backtrace\\r\\n ActiveRecord::StatementInvalid:\\r\\n ArgumentError: prepare called on a closed database: rollback transaction\\r\\n\\r\\nmy database configuration is:\\r\\n\\r\\ntest:\\r\\n adapter: sqlite3\\r\\n database: db/test.sqlite3\\r\\n pool: 5\\r\\n timeout: 5000\\r\\n\\r\\ntest_published:\\r\\n adapter: sqlite3\\r\\n database: db/test_published.sqlite3\\r\\n pool: 5\\r\\n timeout: 5000\\r\\n\\r\\nIn the application I switch between database using:\\r\\n\\r\\nPcdObject.establish_connection \\\"\#{Rails.env}\\\"\\r\\nPcdObject.establish_connection \\\"\#{Rails.env}_published\\\"\\r\\n\\r\\nMy test cases are something like:\\r\\n\\r\\ndescribe \\\"Something\\\" do\\r\\n describe \\\"Something more\\\" do\\r\\n it \\\"A\\\" do\\r\\n ....\\r\\n end\\r\\n it \\\"B\\\" do\\r\\n ....\\r\\n end\\r\\n end\\r\\nend\\r\\n\\r\\nSo, when the test B is executed I got that error, the following is the full stack trace:\\r\\n\\r\\n Failure/Error: Unable to find matching line from backtrace\\r\\n ActiveRecord::StatementInvalid:\\r\\n ArgumentError: prepare called on a closed database: rollback transaction\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `initialize'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `new'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `prepare'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:134:in `execute'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:515:in `rollback'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/connection_adapters/sqlite_adapter.rb:322:in `block in rollback_db_transaction'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activesupport-3.2.13/lib/active_support/notifications/instrumenter.rb:20:in `instrument'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/connection_adapters/sqlite_adapter.rb:322:in `rollback_db_transaction'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:880:in `block in teardown_fixtures'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:878:in `each'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:878:in `teardown_fixtures'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-rails-2.12.0/lib/rspec/rails/adapters.rb:29:in `block (2 levels) in teardown'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:468:in `instance_eval'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:468:in `instance_eval_with_rescue'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example.rb:242:in `instance_eval_with_rescue'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/hooks.rb:35:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/hooks.rb:72:in `block in run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/hooks.rb:72:in `each'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/hooks.rb:72:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/hooks.rb:424:in `run_hook'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:337:in `run_after_each_hooks'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example.rb:304:in `run_after_each'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example.rb:120:in `block in run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example.rb:254:in `with_around_each_hooks'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example.rb:111:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:388:in `block in run_examples'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:384:in `map'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:384:in `run_examples'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:369:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:370:in `block in run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:370:in `map'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:370:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:28:in `block (2 levels) in run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:28:in `map'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:28:in `block in run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/reporter.rb:34:in `report'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:25:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/runner.rb:80:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/runner.rb:17:in `block in autorun'\\r\\n\\r\\nI know the test cases write on both database because when I deactive the transactional feature config.use_transactional_fixtures = false, the records exists on both test databases. \\r\\n\\r\\nI'm writing RSpec test cases. I'm using Rails 3.2.13.\\r\\n\\r\\nThe other Issue I have is that Rails only rebuild the \\\"test\\\" database, when run the test cases is not aware about the other database and only rebuild this one. I solved that writing a rake task that I will be execute when the \\\"test\\\" database is rebuilt, I did not find any better solution, the rake task is:\\r\\n\\r\\nlib/tasks/db.rake\\r\\n\\r\\nnamespace :db do\\r\\n namespace :test do\\r\\n task :load_schema do\\r\\n #Get the path of the test database.\\r\\n feed_database_config = ActiveRecord::Base.configurations[\\\"test\\\"]\\r\\n feed_path = feed_database_config['database']\\r\\n feed_db_file = \\\"\#{Rails.root}/\#{feed_path}\\\"\\r\\n #Get the path of the second test database.\\r\\n published_database_config = ActiveRecord::Base.configurations[\\\"test_published\\\"]\\r\\n published_path = published_database_config['database']\\r\\n published_db_file = \\\"\#{Rails.root}/\#{published_path}\\\"\\r\\n #Copy test database to the second database.\\r\\n FileUtils.cp(feed_db_file, published_db_file)\\r\\n end\\r\\n end\\r\\nend\\r\\n\\r\\nOf course that works for sqlite.\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10566\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10566/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10566/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10566/events\",\"html_url\":\"https://github.com/rails/rails/issues/10566\",\"id\":14218410,\"number\":10566,\"title\":\"do not load all child records for inverse case\",\"user\":{\"login\":\"neerajdotname\",\"id\":6399,\"avatar_url\":\"https://secure.gravatar.com/avatar/934f858e451cf9b771996b2940cd696b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"934f858e451cf9b771996b2940cd696b\",\"url\":\"https://api.github.com/users/neerajdotname\",\"html_url\":\"https://github.com/neerajdotname\",\"followers_url\":\"https://api.github.com/users/neerajdotname/followers\",\"following_url\":\"https://api.github.com/users/neerajdotname/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/neerajdotname/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/neerajdotname/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/neerajdotname/subscriptions\",\"organizations_url\":\"https://api.github.com/users/neerajdotname/orgs\",\"repos_url\":\"https://api.github.com/users/neerajdotname/repos\",\"events_url\":\"https://api.github.com/users/neerajdotname/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/neerajdotname/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-11T06:50:05Z\",\"updated_at\":\"2013-05-11T18:08:31Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10566\",\"diff_url\":\"https://github.com/rails/rails/pull/10566.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10566.patch\"},\"body\":\"currently `post.comments.find(Comment.first.id)` would load all\\r\\ncomments for the given post to set the inverse association.\\r\\n\\r\\nThis has a huge performance penalty. Because if post has 100k\\r\\nrecords and all these 100k records would be loaded in memory\\r\\neven though the comment id was supplied.\\r\\n\\r\\nFix is to use in-memory records only if loaded? is true. Otherwise\\r\\nload the records using full sql.\\r\\n\\r\\nFixes #10509\\r\\n\\r\\n/cc @wangjohn @jeremy @jonleighton\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10565\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10565/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10565/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10565/events\",\"html_url\":\"https://github.com/rails/rails/issues/10565\",\"id\":14216436,\"number\":10565,\"title\":\"Improved grammar and replaced 'dbs' slang with 'databases'\",\"user\":{\"login\":\"prathamesh-sonpatki\",\"id\":621238,\"avatar_url\":\"https://secure.gravatar.com/avatar/1b0973b64704738dbc8ce24d8382bb1f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"1b0973b64704738dbc8ce24d8382bb1f\",\"url\":\"https://api.github.com/users/prathamesh-sonpatki\",\"html_url\":\"https://github.com/prathamesh-sonpatki\",\"followers_url\":\"https://api.github.com/users/prathamesh-sonpatki/followers\",\"following_url\":\"https://api.github.com/users/prathamesh-sonpatki/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/prathamesh-sonpatki/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/prathamesh-sonpatki/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/prathamesh-sonpatki/subscriptions\",\"organizations_url\":\"https://api.github.com/users/prathamesh-sonpatki/orgs\",\"repos_url\":\"https://api.github.com/users/prathamesh-sonpatki/repos\",\"events_url\":\"https://api.github.com/users/prathamesh-sonpatki/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/prathamesh-sonpatki/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":6,\"created_at\":\"2013-05-11T02:33:35Z\",\"updated_at\":\"2013-05-15T09:21:19Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10565\",\"diff_url\":\"https://github.com/rails/rails/pull/10565.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10565.patch\"},\"body\":\"\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10561\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10561/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10561/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10561/events\",\"html_url\":\"https://github.com/rails/rails/issues/10561\",\"id\":14204740,\"number\":10561,\"title\":\"Rather than raising ThrowResult when construct_limited_ids_conditions comes up empty, set the relation to NullRelation and rely on its results.\",\"user\":{\"login\":\"Empact\",\"id\":5470,\"avatar_url\":\"https://secure.gravatar.com/avatar/b4493ae064e6e2841f376fd1dc12b7ba?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"b4493ae064e6e2841f376fd1dc12b7ba\",\"url\":\"https://api.github.com/users/Empact\",\"html_url\":\"https://github.com/Empact\",\"followers_url\":\"https://api.github.com/users/Empact/followers\",\"following_url\":\"https://api.github.com/users/Empact/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/Empact/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/Empact/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/Empact/subscriptions\",\"organizations_url\":\"https://api.github.com/users/Empact/orgs\",\"repos_url\":\"https://api.github.com/users/Empact/repos\",\"events_url\":\"https://api.github.com/users/Empact/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/Empact/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-10T19:04:21Z\",\"updated_at\":\"2013-05-13T19:29:48Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10561\",\"diff_url\":\"https://github.com/rails/rails/pull/10561.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10561.patch\"},\"body\":\"This will help avoid errors like 2fcafee, because in most cases NullRelation will do the right thing. Minor bonus is avoiding the use of exceptions for flow control.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10559\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10559/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10559/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10559/events\",\"html_url\":\"https://github.com/rails/rails/issues/10559\",\"id\":14197399,\"number\":10559,\"title\":\"routing error after update from rails 3.2 to 4.0.0.rc1\",\"user\":{\"login\":\"rossi-jeff\",\"id\":671064,\"avatar_url\":\"https://secure.gravatar.com/avatar/42c3ee2d93d2b47b207ef959e4067b78?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"42c3ee2d93d2b47b207ef959e4067b78\",\"url\":\"https://api.github.com/users/rossi-jeff\",\"html_url\":\"https://github.com/rossi-jeff\",\"followers_url\":\"https://api.github.com/users/rossi-jeff/followers\",\"following_url\":\"https://api.github.com/users/rossi-jeff/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/rossi-jeff/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/rossi-jeff/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/rossi-jeff/subscriptions\",\"organizations_url\":\"https://api.github.com/users/rossi-jeff/orgs\",\"repos_url\":\"https://api.github.com/users/rossi-jeff/repos\",\"events_url\":\"https://api.github.com/users/rossi-jeff/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/rossi-jeff/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activesupport\",\"name\":\"activesupport\",\"color\":\"FC9300\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/railties\",\"name\":\"railties\",\"color\":\"8BE06E\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":7,\"created_at\":\"2013-05-10T16:01:29Z\",\"updated_at\":\"2013-05-12T18:57:55Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I have an existing app under development and upgraded to try ruby 2 and rails 4. The app won't boot and I get the following trying to rake routes.\\r\\n\\r\\nSorry if this is not the right place for this but web searches for a solution have been fruitless.\\r\\n\\r\\n```\\r\\nJeffreys-Mac-mini:mongotrax jeffreyrossi$ rake routes --trace\\r\\n** Invoke routes (first_time)\\r\\n** Invoke environment (first_time)\\r\\n** Execute environment\\r\\nrake aborted!\\r\\nRails::Application::RoutesReloader#execute_if_updated delegated to updater.execute_if_updated, but updater is nil: #<Rails::Application::RoutesReloader:0x007fa48a32c810 @paths=[\\\"/Users/jeffreyrossi/svn/mongotrax/config/routes.rb\\\"], @route_sets=[#<ActionDispatch::Routing::RouteSet:0x007fa48a36c4d8>]>\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application/routes_reloader.rb:10:in `rescue in execute_if_updated'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application/routes_reloader.rb:6:in `execute_if_updated'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application/finisher.rb:69:in `block in <module:Finisher>'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/initializable.rb:30:in `instance_exec'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/initializable.rb:30:in `run'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/initializable.rb:55:in `block in run_initializers'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:150:in `block in tsort_each'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:219:in `each_strongly_connected_component_from'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:182:in `block in each_strongly_connected_component'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:180:in `each'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:180:in `each_strongly_connected_component'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:148:in `tsort_each'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/initializable.rb:54:in `run_initializers'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application.rb:214:in `initialize!'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/railtie/configurable.rb:30:in `method_missing'\\r\\n/Users/jeffreyrossi/svn/mongotrax/config/environment.rb:5:in `<top (required)>'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:228:in `require'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:228:in `block in require'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:213:in `load_dependency'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:228:in `require'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application.rb:188:in `require_environment!'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application.rb:248:in `block in run_tasks_blocks'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:246:in `call'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:241:in `each'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:205:in `block in invoke_prerequisites'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:203:in `each'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:203:in `invoke_prerequisites'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:183:in `block in invoke_with_call_chain'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:143:in `invoke_task'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:101:in `block (2 levels) in top_level'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:101:in `each'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:101:in `block in top_level'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:110:in `run_with_threads'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:95:in `top_level'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:73:in `block in run'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:70:in `run'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/bin/rake:33:in `<top (required)>'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/bin/rake:19:in `load'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/bin/rake:19:in `<main>'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/bin/ruby_noexec_wrapper:14:in `eval'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/bin/ruby_noexec_wrapper:14:in `<main>'\\r\\nTasks: TOP => routes => environment\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10550\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10550/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10550/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10550/events\",\"html_url\":\"https://github.com/rails/rails/issues/10550\",\"id\":14185972,\"number\":10550,\"title\":\"removed explicit arguments from super call\",\"user\":{\"login\":\"akalyaev\",\"id\":1282182,\"avatar_url\":\"https://secure.gravatar.com/avatar/d83b63db79b42978fe35e120550ca180?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"d83b63db79b42978fe35e120550ca180\",\"url\":\"https://api.github.com/users/akalyaev\",\"html_url\":\"https://github.com/akalyaev\",\"followers_url\":\"https://api.github.com/users/akalyaev/followers\",\"following_url\":\"https://api.github.com/users/akalyaev/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/akalyaev/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/akalyaev/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/akalyaev/subscriptions\",\"organizations_url\":\"https://api.github.com/users/akalyaev/orgs\",\"repos_url\":\"https://api.github.com/users/akalyaev/repos\",\"events_url\":\"https://api.github.com/users/akalyaev/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/akalyaev/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-10T10:29:16Z\",\"updated_at\":\"2013-05-10T18:52:56Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10550\",\"diff_url\":\"https://github.com/rails/rails/pull/10550.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10550.patch\"},\"body\":\"Ruby will automatically forward the arguments that were passed to the method from\\r\\nwhich it's called to the parent method.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10547\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10547/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10547/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10547/events\",\"html_url\":\"https://github.com/rails/rails/issues/10547\",\"id\":14181025,\"number\":10547,\"title\":\"Extended ActiveSupport::Concern instead of regular plain hooks in Rails::Generators::Migration module\",\"user\":{\"login\":\"aditya-kapoor\",\"id\":1955930,\"avatar_url\":\"https://secure.gravatar.com/avatar/7ce4d65f432864a629d71409f1443c68?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"7ce4d65f432864a629d71409f1443c68\",\"url\":\"https://api.github.com/users/aditya-kapoor\",\"html_url\":\"https://github.com/aditya-kapoor\",\"followers_url\":\"https://api.github.com/users/aditya-kapoor/followers\",\"following_url\":\"https://api.github.com/users/aditya-kapoor/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/aditya-kapoor/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/aditya-kapoor/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/aditya-kapoor/subscriptions\",\"organizations_url\":\"https://api.github.com/users/aditya-kapoor/orgs\",\"repos_url\":\"https://api.github.com/users/aditya-kapoor/repos\",\"events_url\":\"https://api.github.com/users/aditya-kapoor/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/aditya-kapoor/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":8,\"created_at\":\"2013-05-10T07:23:14Z\",\"updated_at\":\"2013-05-15T06:03:36Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10547\",\"diff_url\":\"https://github.com/rails/rails/pull/10547.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10547.patch\"},\"body\":\"In the module Rails::Generator::Migration, we are using the benefit of ActiveSupport::Concern instead of plain old hooks so as to add methods of ClassMethods module in the class...\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10542\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10542/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10542/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10542/events\",\"html_url\":\"https://github.com/rails/rails/issues/10542\",\"id\":14178594,\"number\":10542,\"title\":\"Remove unnecessary require from active_support/inflector/methods.rb\",\"user\":{\"login\":\"waseem\",\"id\":42636,\"avatar_url\":\"https://secure.gravatar.com/avatar/20b986aecf495c7a1d9b1910bd5f2cd2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"20b986aecf495c7a1d9b1910bd5f2cd2\",\"url\":\"https://api.github.com/users/waseem\",\"html_url\":\"https://github.com/waseem\",\"followers_url\":\"https://api.github.com/users/waseem/followers\",\"following_url\":\"https://api.github.com/users/waseem/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/waseem/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/waseem/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/waseem/subscriptions\",\"organizations_url\":\"https://api.github.com/users/waseem/orgs\",\"repos_url\":\"https://api.github.com/users/waseem/repos\",\"events_url\":\"https://api.github.com/users/waseem/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/waseem/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-10T05:05:40Z\",\"updated_at\":\"2013-05-10T05:05:40Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10542\",\"diff_url\":\"https://github.com/rails/rails/pull/10542.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10542.patch\"},\"body\":\"`active_support/inflections` already requires\\r\\n`active_support/inflector/inflections`. There's no need to require it in\\r\\n`active_support/inflector/methods`.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10539\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10539/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10539/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10539/events\",\"html_url\":\"https://github.com/rails/rails/issues/10539\",\"id\":14156923,\"number\":10539,\"title\":\"Improve performance of ActiveRecord::Relation#blank?\",\"user\":{\"login\":\"davidcelis\",\"id\":36873,\"avatar_url\":\"https://secure.gravatar.com/avatar/9b0144a16ba125a94460c5d45f07efb9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"9b0144a16ba125a94460c5d45f07efb9\",\"url\":\"https://api.github.com/users/davidcelis\",\"html_url\":\"https://github.com/davidcelis\",\"followers_url\":\"https://api.github.com/users/davidcelis/followers\",\"following_url\":\"https://api.github.com/users/davidcelis/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/davidcelis/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/davidcelis/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/davidcelis/subscriptions\",\"organizations_url\":\"https://api.github.com/users/davidcelis/orgs\",\"repos_url\":\"https://api.github.com/users/davidcelis/repos\",\"events_url\":\"https://api.github.com/users/davidcelis/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/davidcelis/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":4,\"created_at\":\"2013-05-09T17:43:07Z\",\"updated_at\":\"2013-05-12T03:04:58Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10539\",\"diff_url\":\"https://github.com/rails/rails/pull/10539.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10539.patch\"},\"body\":\"This is an SQL improvement to ActiveRecord::Relation#blank?. Currently,\\r\\nit calls `to_a` on the Relation, which loads all records in the\\r\\nassociation, and calls `blank?` on the loaded Array. There are other\\r\\nways, however, to check the emptiness of an association that are far\\r\\nmore performant. `#empty?`, `#exists?` and `#any?` all attach a `LIMIT\\r\\n1` to the SQL query before firing it off, which is a nice query\\r\\nimprovement. `#blank?` should do the same! This is easily done by\\r\\nmaking `#blank?` an alias of `#empty?`.\\r\\n\\r\\nBonus performance improvements will also happen for `#present?`, which\\r\\nmerely calls the negation of `#blank?`\\r\\n\\r\\nSigned-off-by: David Celis <me@davidcel.is>\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10538\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10538/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10538/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10538/events\",\"html_url\":\"https://github.com/rails/rails/issues/10538\",\"id\":14156559,\"number\":10538,\"title\":\"scope_chain should not be mutated for other reflections\",\"user\":{\"login\":\"neerajdotname\",\"id\":6399,\"avatar_url\":\"https://secure.gravatar.com/avatar/934f858e451cf9b771996b2940cd696b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"934f858e451cf9b771996b2940cd696b\",\"url\":\"https://api.github.com/users/neerajdotname\",\"html_url\":\"https://github.com/neerajdotname\",\"followers_url\":\"https://api.github.com/users/neerajdotname/followers\",\"following_url\":\"https://api.github.com/users/neerajdotname/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/neerajdotname/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/neerajdotname/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/neerajdotname/subscriptions\",\"organizations_url\":\"https://api.github.com/users/neerajdotname/orgs\",\"repos_url\":\"https://api.github.com/users/neerajdotname/repos\",\"events_url\":\"https://api.github.com/users/neerajdotname/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/neerajdotname/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-09T17:35:05Z\",\"updated_at\":\"2013-05-09T17:35:05Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10538\",\"diff_url\":\"https://github.com/rails/rails/pull/10538.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10538.patch\"},\"body\":\"Currently `scope_chain` uses same array for building different\\r\\n`scope_chain` for different associations. During processing\\r\\nthese arrays are sometimes mutated and because of in-place\\r\\nmutation the changed `scope_chain` impacts other reflections.\\r\\n\\r\\nFix is to dup the value before adding to the `scope_chain`.\\r\\n\\r\\nFixes #3882.\\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10537\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10537/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10537/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10537/events\",\"html_url\":\"https://github.com/rails/rails/issues/10537\",\"id\":14150101,\"number\":10537,\"title\":\" #10428: Added tests for config.assets.precompile\",\"user\":{\"login\":\"pftg\",\"id\":125715,\"avatar_url\":\"https://secure.gravatar.com/avatar/712a9cc852c438c0873ef0a98f749f2e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"712a9cc852c438c0873ef0a98f749f2e\",\"url\":\"https://api.github.com/users/pftg\",\"html_url\":\"https://github.com/pftg\",\"followers_url\":\"https://api.github.com/users/pftg/followers\",\"following_url\":\"https://api.github.com/users/pftg/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/pftg/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/pftg/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/pftg/subscriptions\",\"organizations_url\":\"https://api.github.com/users/pftg/orgs\",\"repos_url\":\"https://api.github.com/users/pftg/repos\",\"events_url\":\"https://api.github.com/users/pftg/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/pftg/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-09T15:09:14Z\",\"updated_at\":\"2013-05-09T15:36:52Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10537\",\"diff_url\":\"https://github.com/rails/rails/pull/10537.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10537.patch\"},\"body\":\"Tests for bug in sprocket-rails:\\r\\n do not use value of configuration options\\r\\n which changed after environment loaded\\r\\n\\r\\nThis PR connected with https://github.com/rails/sprockets-rails/pull/50 which will resolve #10428 issue\"}]", :headers=>{"Server"=>"GitHub.com", "Date"=>"Mon, 20 May 2013 20:23:25 GMT", "Content-Type"=>"application/json; charset=utf-8", "Connection"=>"keep-alive", "Status"=>"200 OK", "X-RateLimit-Limit"=>"60", "X-RateLimit-Remaining"=>"58", "Vary"=>"Accept, Accept-Encoding", "Cache-Control"=>"public, max-age=60, s-maxage=60", "Last-Modified"=>"Mon, 20 May 2013 20:18:37 GMT", "ETag"=>"\"913a5ce41b2a2f9dbe5e0baa3dda6b79\"", "X-GitHub-Media-Type"=>"github.beta; param=3.raw; format=json", "Link"=>"<https://api.github.com/repositories/8514/issues?page=3>; rel=\"next\", <https://api.github.com/repositories/8514/issues?page=18>; rel=\"last\", <https://api.github.com/repositories/8514/issues?page=1>; rel=\"first\", <https://api.github.com/repositories/8514/issues?page=1>; rel=\"prev\"", "X-Content-Type-Options"=>"nosniff", "Content-Length"=>"108863", "Access-Control-Allow-Credentials"=>"true", "Access-Control-Expose-Headers"=>"Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes", "Access-Control-Allow-Origin"=>"*"}, :status=>200, :remote_ip=>"207.97.227.243"}
22
+ {:body=>"[{\"url\":\"https://api.github.com/repos/rails/rails/issues/10634\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10634/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10634/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10634/events\",\"html_url\":\"https://github.com/rails/rails/issues/10634\",\"id\":14358547,\"number\":10634,\"title\":\"Maintain proleptic gregorian in Time#advance\",\"user\":{\"login\":\"teleological\",\"id\":61700,\"avatar_url\":\"https://secure.gravatar.com/avatar/d856d2ac977eebd19b55bc4cbd7cf9a9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"d856d2ac977eebd19b55bc4cbd7cf9a9\",\"url\":\"https://api.github.com/users/teleological\",\"html_url\":\"https://github.com/teleological\",\"followers_url\":\"https://api.github.com/users/teleological/followers\",\"following_url\":\"https://api.github.com/users/teleological/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/teleological/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/teleological/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/teleological/subscriptions\",\"organizations_url\":\"https://api.github.com/users/teleological/orgs\",\"repos_url\":\"https://api.github.com/users/teleological/repos\",\"events_url\":\"https://api.github.com/users/teleological/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/teleological/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":{\"login\":\"pixeltrix\",\"id\":6321,\"avatar_url\":\"https://secure.gravatar.com/avatar/b14001f2b40640dd6cb63f0e8f1f4869?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"b14001f2b40640dd6cb63f0e8f1f4869\",\"url\":\"https://api.github.com/users/pixeltrix\",\"html_url\":\"https://github.com/pixeltrix\",\"followers_url\":\"https://api.github.com/users/pixeltrix/followers\",\"following_url\":\"https://api.github.com/users/pixeltrix/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/pixeltrix/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/pixeltrix/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/pixeltrix/subscriptions\",\"organizations_url\":\"https://api.github.com/users/pixeltrix/orgs\",\"repos_url\":\"https://api.github.com/users/pixeltrix/repos\",\"events_url\":\"https://api.github.com/users/pixeltrix/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/pixeltrix/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-15T13:32:58Z\",\"updated_at\":\"2013-05-15T15:23:25Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10634\",\"diff_url\":\"https://github.com/rails/rails/pull/10634.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10634.patch\"},\"body\":\"If Time is assumed to represent a gregorian value (not conspicuously documented, but assumed by Time#to_date in Ruby > 1.8), Time#advance should return a value which is also gregorian. Currently, that is not invariably the case:\\r\\n\\r\\n Time.utc(1582, 10, 15).advance(:days => -1) # => 1582-10-04 00:00:00 UTC\\r\\n\\r\\nIf a resulting Time object with implicit julian date is used in calculations with Time objects with implicit gregorian dates, hijinks ensue:\\r\\n\\r\\n t = Time.utc(1582, 10, 15)\\r\\n distance_of_time_in_words(t - t.advance(:days => -1)) # => \\\"11 days\\\"\\r\\n\\r\\nI'd be glad to backport this fix. In that case ActiveSupport's Time#to_date (for Ruby < 1.9) should also be amended to specify proleptic gregorian for consistent behavior with Ruby 1.9.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10630\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10630/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10630/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10630/events\",\"html_url\":\"https://github.com/rails/rails/issues/10630\",\"id\":14348993,\"number\":10630,\"title\":\"Password Attribute Not Wrapped By Default When Using 'has_secure_password'\",\"user\":{\"login\":\"ksylvest\",\"id\":73432,\"avatar_url\":\"https://secure.gravatar.com/avatar/c78e40f8fc27a048f10ece6956a2fdf2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"c78e40f8fc27a048f10ece6956a2fdf2\",\"url\":\"https://api.github.com/users/ksylvest\",\"html_url\":\"https://github.com/ksylvest\",\"followers_url\":\"https://api.github.com/users/ksylvest/followers\",\"following_url\":\"https://api.github.com/users/ksylvest/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/ksylvest/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/ksylvest/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/ksylvest/subscriptions\",\"organizations_url\":\"https://api.github.com/users/ksylvest/orgs\",\"repos_url\":\"https://api.github.com/users/ksylvest/repos\",\"events_url\":\"https://api.github.com/users/ksylvest/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/ksylvest/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":{\"login\":\"guilleiguaran\",\"id\":160941,\"avatar_url\":\"https://secure.gravatar.com/avatar/73d57855a3bfe5c534596197a895ab6e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"73d57855a3bfe5c534596197a895ab6e\",\"url\":\"https://api.github.com/users/guilleiguaran\",\"html_url\":\"https://github.com/guilleiguaran\",\"followers_url\":\"https://api.github.com/users/guilleiguaran/followers\",\"following_url\":\"https://api.github.com/users/guilleiguaran/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/guilleiguaran/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/guilleiguaran/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/guilleiguaran/subscriptions\",\"organizations_url\":\"https://api.github.com/users/guilleiguaran/orgs\",\"repos_url\":\"https://api.github.com/users/guilleiguaran/repos\",\"events_url\":\"https://api.github.com/users/guilleiguaran/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/guilleiguaran/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-15T08:55:29Z\",\"updated_at\":\"2013-05-16T03:36:57Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Given the following schema, model and controller:\\r\\n\\r\\n```ruby\\r\\nActiveRecord::Schema.define(version: 20130515084505) do\\r\\n create_table \\\"users\\\", force: true do |t|\\r\\n t.string \\\"email\\\"\\r\\n t.string \\\"password_digest\\\"\\r\\n t.datetime \\\"created_at\\\"\\r\\n t.datetime \\\"updated_at\\\"\\r\\n end\\r\\nend\\r\\n\\r\\nclass User < ActiveRecord::Base\\r\\n has_secure_password\\r\\nend\\r\\n\\r\\nclass UsersController < ApplicationController\\r\\n # POST /user\\r\\n def create\\r\\n head :ok\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nAnd posting JSON on the root (with the standard wrap parameters initializer):\\r\\n\\r\\n```bash\\r\\ncurl -v -H \\\"Accept: application/json\\\" -H \\\"Content-type: application/json\\\" -X POST -d ' { \\\"password\\\" : \\\"secret\\\", \\\"email\\\" : \\\"awesome@email.com\\\" }' http://localhost:3000/user\\r\\n```\\r\\n\\r\\nResults in 'password' parameters not getting wrapped:\\r\\n\\r\\n```bash\\r\\nParameters: {\\\"password\\\"=>\\\"[FILTERED]\\\", \\\"email\\\"=>\\\"awesome@email.com\\\", \\\"user\\\"=>{\\\"email\\\"=>\\\"awesome@email.com\\\"}}\\r\\n```\\r\\n\\r\\nExpected:\\r\\n\\r\\n```bash\\r\\nParameters: {\\\"password\\\"=>\\\"[FILTERED]\\\", \\\"email\\\"=>\\\"awesome@email.com\\\", \\\"user\\\"=>{\\\"password\\\"=>\\\"[FILTERED]\\\", \\\"email\\\"=>\\\"awesome@email.com\\\"}}\\r\\n```\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10629\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10629/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10629/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10629/events\",\"html_url\":\"https://github.com/rails/rails/issues/10629\",\"id\":14346310,\"number\":10629,\"title\":\"Fixes bug 10628.\",\"user\":{\"login\":\"stmpjmpr\",\"id\":15185,\"avatar_url\":\"https://secure.gravatar.com/avatar/2b30680beaf816e65dcd384aad8404e9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"2b30680beaf816e65dcd384aad8404e9\",\"url\":\"https://api.github.com/users/stmpjmpr\",\"html_url\":\"https://github.com/stmpjmpr\",\"followers_url\":\"https://api.github.com/users/stmpjmpr/followers\",\"following_url\":\"https://api.github.com/users/stmpjmpr/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/stmpjmpr/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/stmpjmpr/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/stmpjmpr/subscriptions\",\"organizations_url\":\"https://api.github.com/users/stmpjmpr/orgs\",\"repos_url\":\"https://api.github.com/users/stmpjmpr/repos\",\"events_url\":\"https://api.github.com/users/stmpjmpr/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/stmpjmpr/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-15T07:26:27Z\",\"updated_at\":\"2013-05-15T17:58:09Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10629\",\"diff_url\":\"https://github.com/rails/rails/pull/10629.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10629.patch\"},\"body\":\"Railties tests non-existent Rake::Application in some cases. Fixed in this pull request.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10628\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10628/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10628/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10628/events\",\"html_url\":\"https://github.com/rails/rails/issues/10628\",\"id\":14345989,\"number\":10628,\"title\":\"Railties tests non-existent Rake::Application in some cases\",\"user\":{\"login\":\"stmpjmpr\",\"id\":15185,\"avatar_url\":\"https://secure.gravatar.com/avatar/2b30680beaf816e65dcd384aad8404e9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"2b30680beaf816e65dcd384aad8404e9\",\"url\":\"https://api.github.com/users/stmpjmpr\",\"html_url\":\"https://github.com/stmpjmpr\",\"followers_url\":\"https://api.github.com/users/stmpjmpr/followers\",\"following_url\":\"https://api.github.com/users/stmpjmpr/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/stmpjmpr/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/stmpjmpr/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/stmpjmpr/subscriptions\",\"organizations_url\":\"https://api.github.com/users/stmpjmpr/orgs\",\"repos_url\":\"https://api.github.com/users/stmpjmpr/repos\",\"events_url\":\"https://api.github.com/users/stmpjmpr/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/stmpjmpr/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/needs+feedback\",\"name\":\"needs feedback\",\"color\":\"ededed\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-15T07:13:59Z\",\"updated_at\":\"2013-05-15T17:55:25Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"When trying to run tests in RubyMine with Rails 4.0.0-rc1 and ruby 2.0.0-p0, I got the following error:\\r\\n\\r\\n\\r\\nFail to load: /Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/test/test_helper.rb:1\\r\\n Exception message: undefined method `application' for Rake:Module\\r\\n[\\\"/Users/stmpjmpr/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.rc1/lib/rails/test_unit/railtie.rb:1:in `<top (required)>'\\\", \\\"/Users/stmpjmpr/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.rc1/lib/rails/all.rb:11:in `require'\\\", \\\"/Users/stmpjmpr/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.rc1/lib/rails/all.rb:11:in `block in <top (required)>'\\\", \\\"/Users/stmpjmpr/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.rc1/lib/rails/all.rb:9:in `each'\\\", \\\"/Users/stmpjmpr/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.rc1/lib/rails/all.rb:9:in `<top (required)>'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/config/application.rb:3:in `require'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/config/application.rb:3:in `<top (required)>'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/config/environment.rb:2:in `require'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/config/environment.rb:2:in `<top (required)>'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/test/test_helper.rb:5:in `require'\\\", \\\"/Volumes/Braille/Users/stmpjmpr/Code/ruby/rails/bikeshop/test/test_helper.rb:5:in `<top (required)>'\\\", \\\"/Applications/RubyMine.app/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:51:in `require'\\\", \\\"/Applications/RubyMine.app/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:51:in `block in require_all_test_scripts'\\\", \\\"/Applications/RubyMine.app/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:44:in `each'\\\", \\\"/Applications/RubyMine.app/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:44:in `require_all_test_scripts'\\\", \\\"/Applications/RubyMine.app/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:134:in `<top (required)>'\\\", \\\"-e:1:in `load'\\\", \\\"-e:1:in `<main>'\\\"]\\r\\n\\r\\nThe file railties-4.0.0.rc1/lib/rails/test_unit/railtie.rb attempts to test Rake::Application, which doesn't exist in all contexts, including mine. I'll submit a pull request with a simple fix.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10627\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10627/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10627/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10627/events\",\"html_url\":\"https://github.com/rails/rails/issues/10627\",\"id\":14343423,\"number\":10627,\"title\":\"change to destructive `deep_symbolize_keys` \",\"user\":{\"login\":\"vipulnsward\",\"id\":567626,\"avatar_url\":\"https://secure.gravatar.com/avatar/f459742822cf8347e83d5c445378a934?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f459742822cf8347e83d5c445378a934\",\"url\":\"https://api.github.com/users/vipulnsward\",\"html_url\":\"https://github.com/vipulnsward\",\"followers_url\":\"https://api.github.com/users/vipulnsward/followers\",\"following_url\":\"https://api.github.com/users/vipulnsward/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/vipulnsward/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/vipulnsward/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/vipulnsward/subscriptions\",\"organizations_url\":\"https://api.github.com/users/vipulnsward/orgs\",\"repos_url\":\"https://api.github.com/users/vipulnsward/repos\",\"events_url\":\"https://api.github.com/users/vipulnsward/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/vipulnsward/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-15T05:06:59Z\",\"updated_at\":\"2013-05-17T03:46:14Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10627\",\"diff_url\":\"https://github.com/rails/rails/pull/10627.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10627.patch\"},\"body\":\"change to destructive `deep_symbolize_keys` after https://github.com/rails/rails/commit/df24b8790f22384a068fece7042f04ffd2fcb33e which allows to do so. \\r\\nThis helps to avoid extra hash object creation, by symbolizing inplace\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10625\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10625/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10625/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10625/events\",\"html_url\":\"https://github.com/rails/rails/issues/10625\",\"id\":14335008,\"number\":10625,\"title\":\"include README in relevant top-level module for RDoc\",\"user\":{\"login\":\"zzak\",\"id\":277819,\"avatar_url\":\"https://secure.gravatar.com/avatar/7fe945668a4fc098e886e20dea71d2ee?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"7fe945668a4fc098e886e20dea71d2ee\",\"url\":\"https://api.github.com/users/zzak\",\"html_url\":\"https://github.com/zzak\",\"followers_url\":\"https://api.github.com/users/zzak/followers\",\"following_url\":\"https://api.github.com/users/zzak/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/zzak/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/zzak/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/zzak/subscriptions\",\"organizations_url\":\"https://api.github.com/users/zzak/orgs\",\"repos_url\":\"https://api.github.com/users/zzak/repos\",\"events_url\":\"https://api.github.com/users/zzak/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/zzak/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":{\"login\":\"fxn\",\"id\":3387,\"avatar_url\":\"https://secure.gravatar.com/avatar/7223c62b7310e164eb79c740188abbda?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"7223c62b7310e164eb79c740188abbda\",\"url\":\"https://api.github.com/users/fxn\",\"html_url\":\"https://github.com/fxn\",\"followers_url\":\"https://api.github.com/users/fxn/followers\",\"following_url\":\"https://api.github.com/users/fxn/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/fxn/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/fxn/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/fxn/subscriptions\",\"organizations_url\":\"https://api.github.com/users/fxn/orgs\",\"repos_url\":\"https://api.github.com/users/fxn/repos\",\"events_url\":\"https://api.github.com/users/fxn/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/fxn/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-14T22:28:06Z\",\"updated_at\":\"2013-05-16T18:40:58Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10625\",\"diff_url\":\"https://github.com/rails/rails/pull/10625.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10625.patch\"},\"body\":\"The purpose for this is to allow users who've installed the RI documentation for rails to view the associated README contents for all available top-level modules. This should work with rdoc 3.9, as well as future releases of rdoc.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10622\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10622/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10622/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10622/events\",\"html_url\":\"https://github.com/rails/rails/issues/10622\",\"id\":14329071,\"number\":10622,\"title\":\"Testing Rails Engines that utilize a database: Rake tasks not copying migrations to dummy.\",\"user\":{\"login\":\"blischalk\",\"id\":947657,\"avatar_url\":\"https://secure.gravatar.com/avatar/f87171d5254bb42711ee34dc4f04a626?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f87171d5254bb42711ee34dc4f04a626\",\"url\":\"https://api.github.com/users/blischalk\",\"html_url\":\"https://github.com/blischalk\",\"followers_url\":\"https://api.github.com/users/blischalk/followers\",\"following_url\":\"https://api.github.com/users/blischalk/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/blischalk/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/blischalk/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/blischalk/subscriptions\",\"organizations_url\":\"https://api.github.com/users/blischalk/orgs\",\"repos_url\":\"https://api.github.com/users/blischalk/repos\",\"events_url\":\"https://api.github.com/users/blischalk/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/blischalk/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/engines\",\"name\":\"engines\",\"color\":\"e102d8\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-14T20:18:10Z\",\"updated_at\":\"2013-05-14T20:32:55Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Using Rails Rails 4.0.0.rc1...\\r\\n\\r\\nWhen a Rails Engine is generated using the full or mountable flag and a model with a backing migration is created, the rake tasks to copy the migrations fail to copy them into the test/dummy app. Here are the steps I have been following:\\r\\n\\r\\n```\\r\\nrails plugin new example --mountable\\r\\nrails g model user name:string\\r\\ncd test/dummy\\r\\n```\\r\\n\\r\\nThe below commands fail:\\r\\nrake example_engine:install:migrations => 'Don't know how to build task'\\r\\nrake app:example_engine:install:migrations => 'Don't know how to build task'\\r\\nrake app:install:migrations => 'Don't know how to build task'\\r\\n\\r\\n\\r\\nIt seems that the rake tasks aren't available for copying migrations to a dummy app as they would be for a host app.\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10621\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10621/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10621/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10621/events\",\"html_url\":\"https://github.com/rails/rails/issues/10621\",\"id\":14328621,\"number\":10621,\"title\":\"has_one with includes excludes limit 1 from resulting query\",\"user\":{\"login\":\"JangoSteve\",\"id\":93607,\"avatar_url\":\"https://secure.gravatar.com/avatar/ca46a3d7ca39aae7b2b27526d0ad64f0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"ca46a3d7ca39aae7b2b27526d0ad64f0\",\"url\":\"https://api.github.com/users/JangoSteve\",\"html_url\":\"https://github.com/JangoSteve\",\"followers_url\":\"https://api.github.com/users/JangoSteve/followers\",\"following_url\":\"https://api.github.com/users/JangoSteve/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/JangoSteve/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/JangoSteve/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/JangoSteve/subscriptions\",\"organizations_url\":\"https://api.github.com/users/JangoSteve/orgs\",\"repos_url\":\"https://api.github.com/users/JangoSteve/repos\",\"events_url\":\"https://api.github.com/users/JangoSteve/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/JangoSteve/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-14T20:07:45Z\",\"updated_at\":\"2013-05-14T20:07:45Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"*Note: This may not actually be a bug, but just a limitation of includes; if so, feel free to close this, but I figured it'd be good to write it down anyway since it's not in the documentation and someone else may search for this issue.*\\r\\n\\r\\nThis seems to effect the latest 3-2-stable branch of rails as of right now. I have the following:\\r\\n\\r\\n```ruby\\r\\nclass User < ActiveRecord::Base\\r\\n has_one :latest_thing, :class_name => 'Thing'\\r\\nend\\r\\n\\r\\nclass Thing < ActiveRecord::Base\\r\\nend\\r\\n```\\r\\n\\r\\nIf I then run:\\r\\n\\r\\n```ruby\\r\\nUser.includes(:latest_thing).first\\r\\n```\\r\\n\\r\\nI get the following SQL (I'm using the postgres adapter, I'm not sure if this is specific to that or not):\\r\\n\\r\\n```\\r\\nUser Load (0.2ms) SELECT \\\"users\\\".* FROM \\\"users\\\" LIMIT 1\\r\\n Thing Load (25.3ms) SELECT \\\"things\\\".* FROM \\\"things\\\" WHERE \\\"things\\\".\\\"user_id\\\" IN (1)\\r\\n```\\r\\n\\r\\nNotice there is no `LIMIT 1` included in the Thing query as would be expected. Alternatively, if I do this instead:\\r\\n\\r\\n```ruby\\r\\nUser.first.latest_thing\\r\\n```\\r\\n\\r\\nI now get the expected SQL:\\r\\n\\r\\n```\\r\\n User Load (0.3ms) SELECT \\\"users\\\".* FROM \\\"users\\\" LIMIT 1\\r\\n Thing Load (0.3ms) SELECT \\\"things\\\".* FROM \\\"things\\\" WHERE \\\"things\\\".\\\"user_id\\\" = 3 LIMIT 1\\r\\n```\\r\\n\\r\\nThe reason this may be a limitation rather than a bug is that, it wouldn't be possible have `LIMIT 1` included in the SQL when writing the query with the `includes` method, since at the time in the Arel chain that `includes` is called, Arel wouldn't yet know that `find` is about to be called, as opposed to some other query that could be searching for multiple records of the parent association.\\r\\n\\r\\nFor example:\\r\\n\\r\\n```ruby\\r\\nUser.includes(:latest_thing).limit(10)\\r\\n```\\r\\n\\r\\nIf the above included `LIMIT 1` in the `Thing` SQL, then we'd only have the `latest_thing` loaded for one of the users.\\r\\n\\r\\nBut the current implementation is problematic because it will actually result in a query that loads *all things* for those 10 users, and instantiates them into an array of Thing objects for all of those things, which means we now have a deceptive query that could be very slow if those 10 users have something like 10,000 things between them that will all get instantiated now into Ruby objects. For us, it was the difference between a 100ms and 2,000ms in our view rendering.\\r\\n\\r\\nAgain, this may not be something that we'd even want to solve for in Arel, as I would expect it's just a limitation of using `includes` (considering the correct behavior would be a complex query that groups `things` on `user_id` and selects only one per group), meaning it just shouldn't be used in this scenario. But it seems like it should be mentioned [in the docs](http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations) for eager loading. I can add a small note about it, but wanted to do a sanity check before doing it and making sure this wasn't an unintentional bug in Rails first.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10615\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10615/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10615/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10615/events\",\"html_url\":\"https://github.com/rails/rails/issues/10615\",\"id\":14305157,\"number\":10615,\"title\":\"Probably AR #joins method shouldn't mark object as readonly\",\"user\":{\"login\":\"prijutme4ty\",\"id\":814984,\"avatar_url\":\"https://secure.gravatar.com/avatar/fe1c0797f345249625590d25a51efd0a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"fe1c0797f345249625590d25a51efd0a\",\"url\":\"https://api.github.com/users/prijutme4ty\",\"html_url\":\"https://github.com/prijutme4ty\",\"followers_url\":\"https://api.github.com/users/prijutme4ty/followers\",\"following_url\":\"https://api.github.com/users/prijutme4ty/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/prijutme4ty/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/prijutme4ty/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/prijutme4ty/subscriptions\",\"organizations_url\":\"https://api.github.com/users/prijutme4ty/orgs\",\"repos_url\":\"https://api.github.com/users/prijutme4ty/repos\",\"events_url\":\"https://api.github.com/users/prijutme4ty/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/prijutme4ty/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-14T11:25:41Z\",\"updated_at\":\"2013-05-14T11:27:27Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"(Rails version 3.2.13)\\r\\nWhen one create scope with `#joins`, its results marked as readonly unless `#select` clause explicitly specified or called `.readonly(false)`.\\r\\nIt looks as this behavior came from the past and not yet necessary\\r\\n\\r\\n class Order < ActiveRecord::Base\\r\\n has_and_belongs_to_many :executors, class_name: 'Specialist', join_table: 'order_executors'\\r\\n scope :by_executor, ->(executor_id) { joins(:executors).where(specialists: {id: executor_id} ) }\\r\\n end\\r\\n\\r\\n orders = Order.by_executor(1)\\r\\n\\r\\n Order Load (2.0ms) SELECT \\\"orders\\\".* FROM \\\"orders\\\" INNER JOIN \\\"order_executors\\\" ON \\\"order_executors\\\".\\\"order_id\\\" = \\\"orders\\\".\\\"id\\\" INNER JOIN \\\"specialists\\\" ON \\\"specialists\\\".\\\"id\\\" = \\\"order_executors\\\".\\\"specialist_id\\\" WHERE \\\"specialists\\\".\\\"id\\\" = 1\\r\\n => [#<Order id: 20, orderable_id: 11, orderable_type: \\\"PlanDevelopment\\\", client_id: 1, completion_status: \\\"finished\\\", created_at: \\\"2013-05-13 20:48:19\\\", updated_at: \\\"2013-05-14 00:36:38\\\", price: #<BigDecimal:67e5898,'0.14E2',9(36)>>]\\r\\n \\r\\n orders.first.specialist_id # raises undefined method specialist_id\\r\\n orders.select(\\\"orders.*, order_executors.id\\\").first.specialist_id # gives specialist_id value\\r\\n\\r\\nI read (http://apidock.com/rails/ActiveRecord/Base/find/class) rationalies about it:\\r\\n:joins - Either an SQL fragment for additional joins like \\\"LEFT JOIN comments ON comments.post_id = id\\\" (rarely needed), named associations in the same form used for the :include option, which will perform an INNER JOIN on the associated table(s), or an array containing a mixture of both strings and named associations. If the value is a string, then the records will be returned read-only since they will have attributes that do not correspond to the table\xE2\x80\x99s columns. Pass :readonly =&gt; false to override.\\r\\n\\r\\nBut this apidock is about rails-2.3.8 and it looks that now there're no improper columns in loaded record.\\r\\nMoreover the problem which was solved by readonly exists in case when `#select` with additional options used - because it can add attributes that don't correspond to any columns. But select removes flag. And without explicit `#select` clause there are no dangers to make record not readonly.\\r\\n\\r\\nI think at least readonly flag should be disabled on joins. And possibly it should be turned on expicit selects.\\r\\n\\r\\nAlso see \\r\\nhttps://groups.google.com/forum/?fromgroups=#!topic/rubyonrails-talk/Y_dPVn16Ptw\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10614\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10614/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10614/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10614/events\",\"html_url\":\"https://github.com/rails/rails/issues/10614\",\"id\":14301396,\"number\":10614,\"title\":\"update_attribute saves UNSAVED objects without performing validations\",\"user\":{\"login\":\"NielsKSchjoedt\",\"id\":570755,\"avatar_url\":\"https://secure.gravatar.com/avatar/7c22112f078c2fe8398fd460fc4be450?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"7c22112f078c2fe8398fd460fc4be450\",\"url\":\"https://api.github.com/users/NielsKSchjoedt\",\"html_url\":\"https://github.com/NielsKSchjoedt\",\"followers_url\":\"https://api.github.com/users/NielsKSchjoedt/followers\",\"following_url\":\"https://api.github.com/users/NielsKSchjoedt/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/NielsKSchjoedt/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/NielsKSchjoedt/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/NielsKSchjoedt/subscriptions\",\"organizations_url\":\"https://api.github.com/users/NielsKSchjoedt/orgs\",\"repos_url\":\"https://api.github.com/users/NielsKSchjoedt/repos\",\"events_url\":\"https://api.github.com/users/NielsKSchjoedt/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/NielsKSchjoedt/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":4,\"created_at\":\"2013-05-14T09:27:17Z\",\"updated_at\":\"2013-05-14T12:34:38Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Consider the following situation:\\r\\n\\r\\nYou have a model called `Car`, that you instantiate like so: `car = Car.new`. On the car you have a some validations for some attrs e.g. brand and model_name, that must be set. By mistake you call `car.update_attribute(:engine_size, 1.9)` somewhere in the code BEFORE the car has actually been saved to the db, and those attributes (brand and model_name has been assigned). What then happens is that the WHOLE car object is saved to the database in the current state without performing any validations or anything.\\r\\n\\r\\nI know that update_attribute is supposed to fire a directly at the database, but I think it's VERY counter intuitive and dangerous, that you are able to do that before the object has been persisted. Think about it, you call `car.update_attribute(:engine_size, 1.9)` and expect it to juts update the attribute that you explicitly specify, but behind the scene it actually saves the whole object completely unsafe. What would be more logical would be one of the following 2 solutions:\\r\\n\\r\\n1. When calling update_attribute on an object which is not persisted, an error should be raised \\\"You cannot update an attribute of an object, which has not yet been saved\\\"\\r\\n\\r\\n2. Or alternatively the attribute that you wanna update is just updated in-memory, since the object it self is not yet stored.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10613\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10613/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10613/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10613/events\",\"html_url\":\"https://github.com/rails/rails/issues/10613\",\"id\":14300784,\"number\":10613,\"title\":\"undefined method `sql_type' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::ColumnDefinition>\",\"user\":{\"login\":\"mountriv99\",\"id\":584545,\"avatar_url\":\"https://secure.gravatar.com/avatar/96be7bbe9c8204035552ee4dd45bb378?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"96be7bbe9c8204035552ee4dd45bb378\",\"url\":\"https://api.github.com/users/mountriv99\",\"html_url\":\"https://github.com/mountriv99\",\"followers_url\":\"https://api.github.com/users/mountriv99/followers\",\"following_url\":\"https://api.github.com/users/mountriv99/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/mountriv99/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/mountriv99/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/mountriv99/subscriptions\",\"organizations_url\":\"https://api.github.com/users/mountriv99/orgs\",\"repos_url\":\"https://api.github.com/users/mountriv99/repos\",\"events_url\":\"https://api.github.com/users/mountriv99/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/mountriv99/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/needs+feedback\",\"name\":\"needs feedback\",\"color\":\"ededed\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":9,\"created_at\":\"2013-05-14T09:10:05Z\",\"updated_at\":\"2013-05-20T18:15:47Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Got an undefined method 'sql_type' error when I tried to run my tests after upgrading from an alpha version of Rails 4 to Rails 4.0 rc1\\r\\n\\r\\nFULL TRACE:\\r\\n\\r\\n\\teric@ubuntu:~/apps/pc$ bundle exec rake test:models --trace\\r\\n\\t** Invoke test:models (first_time)\\r\\n\\t** Invoke test:prepare (first_time)\\r\\n\\t** Invoke db:test:prepare (first_time)\\r\\n\\t** Execute db:test:prepare\\r\\n\\t** Invoke db:test:load (first_time)\\r\\n\\t** Invoke db:test:purge (first_time)\\r\\n\\t** Invoke environment (first_time)\\r\\n\\t** Execute environment\\r\\n\\t** Invoke db:load_config (first_time)\\r\\n\\t** Execute db:load_config\\r\\n\\t** Execute db:test:purge\\r\\n\\t** Execute db:test:load\\r\\n\\t** Invoke db:test:load_schema (first_time)\\r\\n\\t** Invoke db:test:purge \\r\\n\\t** Execute db:test:load_schema\\r\\n\\t** Invoke db:schema:load (first_time)\\r\\n\\t** Invoke environment \\r\\n\\t** Invoke db:load_config \\r\\n\\t** Execute db:schema:load\\r\\n\\trake aborted!\\r\\n\\tundefined method `sql_type' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::ColumnDefinition:0xa524cac>\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/quoting.rb:106:in `type_cast'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/cast.rb:76:in `block in array_to_string'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/cast.rb:71:in `map'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/cast.rb:71:in `array_to_string'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/quoting.rb:35:in `quote'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract/schema_statements.rb:698:in `add_column_options!'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:168:in `add_column_options!'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:31:in `add_column_options!'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:135:in `visit_ColumnDefinition'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:14:in `visit_ColumnDefinition'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:116:in `accept'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:142:in `block in visit_TableDefinition'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:142:in `map'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:142:in `visit_TableDefinition'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:116:in `accept'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/abstract/schema_statements.rb:190:in `create_table'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:622:in `block in method_missing'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:594:in `block in say_with_time'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/benchmark.rb:280:in `measure'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:594:in `say_with_time'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:614:in `method_missing'\\r\\n\\t/home/eric/apps/pc/db/schema.rb:233:in `block in <top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/schema.rb:42:in `instance_eval'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/schema.rb:42:in `define'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/schema.rb:62:in `define'\\r\\n\\t/home/eric/apps/pc/db/schema.rb:14:in `<top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:222:in `load'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:222:in `block in load'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:213:in `load_dependency'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:222:in `load'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/railties/databases.rake:253:in `block (3 levels) in <top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `call'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/railties/databases.rake:326:in `block (3 levels) in <top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `call'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0.rc1/lib/active_record/railties/databases.rake:316:in `block (3 levels) in <top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `call'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:205:in `block in invoke_prerequisites'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:203:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:203:in `invoke_prerequisites'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:183:in `block in invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:205:in `block in invoke_prerequisites'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:203:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:203:in `invoke_prerequisites'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:183:in `block in invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:143:in `invoke_task'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:101:in `block (2 levels) in top_level'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:101:in `each'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:101:in `block in top_level'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:110:in `run_with_threads'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:95:in `top_level'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:73:in `block in run'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/lib/rake/application.rb:70:in `run'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/rake-10.0.4/bin/rake:33:in `<top (required)>'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/bin/rake:23:in `load'\\r\\n\\t/home/eric/.rbenv/versions/1.9.3-p327/bin/rake:23:in `<main>'\\r\\n\\tTasks: TOP => db:schema:load\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10607\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10607/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10607/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10607/events\",\"html_url\":\"https://github.com/rails/rails/issues/10607\",\"id\":14288854,\"number\":10607,\"title\":\"Error using time_ago_in_words\",\"user\":{\"login\":\"brunosiqueira\",\"id\":28031,\"avatar_url\":\"https://secure.gravatar.com/avatar/1bf1443ad6107fd56d3a48cfc6687f1f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"1bf1443ad6107fd56d3a48cfc6687f1f\",\"url\":\"https://api.github.com/users/brunosiqueira\",\"html_url\":\"https://github.com/brunosiqueira\",\"followers_url\":\"https://api.github.com/users/brunosiqueira/followers\",\"following_url\":\"https://api.github.com/users/brunosiqueira/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/brunosiqueira/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/brunosiqueira/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/brunosiqueira/subscriptions\",\"organizations_url\":\"https://api.github.com/users/brunosiqueira/orgs\",\"repos_url\":\"https://api.github.com/users/brunosiqueira/repos\",\"events_url\":\"https://api.github.com/users/brunosiqueira/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/brunosiqueira/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/3-2-stable\",\"name\":\"3-2-stable\",\"color\":\"02d7e1\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/actionview\",\"name\":\"actionview\",\"color\":\"d7e102\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-14T00:34:55Z\",\"updated_at\":\"2013-05-14T01:30:00Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"After upgrading to rails 3.2.13, I started getting the follwing in every view I user the helper time_ago_in_words:\\r\\n\\r\\nActionView::Template::Error (wrong number of arguments (4 for 3)):\\r\\n\\r\\nI suspect that it has something too do with the change of argument numbers of the method distance_of_time_in_words\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10605\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10605/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10605/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10605/events\",\"html_url\":\"https://github.com/rails/rails/issues/10605\",\"id\":14284043,\"number\":10605,\"title\":\"Postgresql UUID primary key not defaulting to using uuid_generate_v4() in test environment...\",\"user\":{\"login\":\"interhive\",\"id\":8636,\"avatar_url\":\"https://secure.gravatar.com/avatar/c27672db6d3cd5cdc5b93ce2c86de4c8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"c27672db6d3cd5cdc5b93ce2c86de4c8\",\"url\":\"https://api.github.com/users/interhive\",\"html_url\":\"https://github.com/interhive\",\"followers_url\":\"https://api.github.com/users/interhive/followers\",\"following_url\":\"https://api.github.com/users/interhive/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/interhive/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/interhive/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/interhive/subscriptions\",\"organizations_url\":\"https://api.github.com/users/interhive/orgs\",\"repos_url\":\"https://api.github.com/users/interhive/repos\",\"events_url\":\"https://api.github.com/users/interhive/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/interhive/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/4-0-stable\",\"name\":\"4-0-stable\",\"color\":\"fbca04\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/master\",\"name\":\"master\",\"color\":\"0052cc\"}],\"state\":\"open\",\"assignee\":{\"login\":\"tenderlove\",\"id\":3124,\"avatar_url\":\"https://secure.gravatar.com/avatar/f29327647a9cff5c69618bae420792ea?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f29327647a9cff5c69618bae420792ea\",\"url\":\"https://api.github.com/users/tenderlove\",\"html_url\":\"https://github.com/tenderlove\",\"followers_url\":\"https://api.github.com/users/tenderlove/followers\",\"following_url\":\"https://api.github.com/users/tenderlove/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/tenderlove/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/tenderlove/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/tenderlove/subscriptions\",\"organizations_url\":\"https://api.github.com/users/tenderlove/orgs\",\"repos_url\":\"https://api.github.com/users/tenderlove/repos\",\"events_url\":\"https://api.github.com/users/tenderlove/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/tenderlove/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":9,\"created_at\":\"2013-05-13T21:57:00Z\",\"updated_at\":\"2013-05-16T20:57:07Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I'm running Rails 4.0.0.rc1 and have a table that uses UUID as primary key:\\r\\n\\r\\n```ruby\\r\\nclass CreateWebLinks < ActiveRecord::Migration\\r\\n def change\\r\\n create_table :web_links, id: :uuid do |t|\\r\\n t.boolean :active, default: true\\r\\n t.string :url, null: false, default: \\\"http://\\\"\\r\\n t.string :title, null: false, default: \\\"\\\"\\r\\n t.string :description\\r\\n t.timestamps\\r\\n end\\r\\n end\\r\\nend\\r\\n```\\r\\n\\r\\nWhen running migrations, the development database sets the default value to use PG's uuid_generate_v4() function to create the ID within the database.\\r\\n\\r\\nI have not been able to get the test database to perform similarly. The ID is created and is denoted as UUID. However, the default value of 'uuid_generate_v4()' is not set in the database.\\r\\n\\r\\nI've tried blowing the test database away, rake test:prepare and rake db:migrate RAILS_ENV=test. Can't seem to get it working and tests are failing as a result.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10604\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10604/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10604/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10604/events\",\"html_url\":\"https://github.com/rails/rails/issues/10604\",\"id\":14283592,\"number\":10604,\"title\":\"Do not invoke callbacks when delete_all is called\",\"user\":{\"login\":\"neerajdotname\",\"id\":6399,\"avatar_url\":\"https://secure.gravatar.com/avatar/934f858e451cf9b771996b2940cd696b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"934f858e451cf9b771996b2940cd696b\",\"url\":\"https://api.github.com/users/neerajdotname\",\"html_url\":\"https://github.com/neerajdotname\",\"followers_url\":\"https://api.github.com/users/neerajdotname/followers\",\"following_url\":\"https://api.github.com/users/neerajdotname/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/neerajdotname/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/neerajdotname/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/neerajdotname/subscriptions\",\"organizations_url\":\"https://api.github.com/users/neerajdotname/orgs\",\"repos_url\":\"https://api.github.com/users/neerajdotname/repos\",\"events_url\":\"https://api.github.com/users/neerajdotname/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/neerajdotname/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-13T21:46:38Z\",\"updated_at\":\"2013-05-13T21:46:38Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10604\",\"diff_url\":\"https://github.com/rails/rails/pull/10604.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10604.patch\"},\"body\":\"Method `delete_all` should not be invoking callbacks and this\\r\\nfeature was deprecated in Rails 4.0. This is being removed.\\r\\n`delete_all` will continue to honor the `:dependent` option. However\\r\\nif `:dependent` value is `:destroy` then the default deletion\\r\\nstrategy for that collection will be applied.\\r\\n\\r\\nUser can also force a deletion strategy by passing parameter to\\r\\n`delete_all`. For example you can do `@post.comments.delete_all(:nullify)`\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10595\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10595/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10595/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10595/events\",\"html_url\":\"https://github.com/rails/rails/issues/10595\",\"id\":14256840,\"number\":10595,\"title\":\"Extended method DateTime#<=> can accept nil\",\"user\":{\"login\":\"Soylent\",\"id\":1593860,\"avatar_url\":\"https://secure.gravatar.com/avatar/7a00609d99319bf350280c1a1b3c7214?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"7a00609d99319bf350280c1a1b3c7214\",\"url\":\"https://api.github.com/users/Soylent\",\"html_url\":\"https://github.com/Soylent\",\"followers_url\":\"https://api.github.com/users/Soylent/followers\",\"following_url\":\"https://api.github.com/users/Soylent/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/Soylent/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/Soylent/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/Soylent/subscriptions\",\"organizations_url\":\"https://api.github.com/users/Soylent/orgs\",\"repos_url\":\"https://api.github.com/users/Soylent/repos\",\"events_url\":\"https://api.github.com/users/Soylent/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/Soylent/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-13T11:54:06Z\",\"updated_at\":\"2013-05-13T12:10:44Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10595\",\"diff_url\":\"https://github.com/rails/rails/pull/10595.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10595.patch\"},\"body\":\"Bug: extended method DateTime#<=> does not accept nil\\r\\n\\r\\nThis causes the following problem:\\r\\n\\r\\n```\\r\\n% rails console\\r\\nirb(main):001:0> (Time.now..Time.now).cover? nil\\r\\nNoMethodError: undefined method `to_datetime' for nil:NilClass\\r\\n\\tfrom /Users/Soilent/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-b44f086cf105/activesupport/lib/active_support/core_ext/date_time/calculations.rb:162:in `<=>'\\r\\n\\tfrom /Users/Soilent/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-b44f086cf105/activesupport/lib/active_support/core_ext/time/calculations.rb:269:in `compare_with_coercion'\\r\\n\\tfrom (irb):1:in `cover?'\\r\\n\\tfrom (irb):1\\r\\n\\tfrom /Users/Soilent/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-b44f086cf105/railties/lib/rails/commands/console.rb:90:in `start'\\r\\n\\tfrom /Users/Soilent/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-b44f086cf105/railties/lib/rails/commands/console.rb:9:in `start'\\r\\n\\tfrom /Users/Soilent/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-b44f086cf105/railties/lib/rails/commands.rb:66:in `<top (required)>'\\r\\n\\tfrom bin/rails:4:in `require'\\r\\n\\tfrom bin/rails:4:in `<main>'\\r\\n```\\r\\n\\r\\nOriginal method DateTime#<=> accepts nil, and this problem does not happen:\\r\\n```\\r\\n% irb\\r\\nirb(main):001:0> require 'date'\\r\\n=> true\\r\\nirb(main):002:0> (Time.now..Time.now).cover? nil\\r\\n=> false\\r\\nirb(main):003:0> DateTime.new <=> nil\\r\\n=> nil\\r\\n```\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10593\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10593/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10593/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10593/events\",\"html_url\":\"https://github.com/rails/rails/issues/10593\",\"id\":14254044,\"number\":10593,\"title\":\"Inclusion/exclusion validator does not work as expected with ranges of strings/symbols\",\"user\":{\"login\":\"jeroenj\",\"id\":76424,\"avatar_url\":\"https://secure.gravatar.com/avatar/ed50ffc70effe033a813064308686440?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"ed50ffc70effe033a813064308686440\",\"url\":\"https://api.github.com/users/jeroenj\",\"html_url\":\"https://github.com/jeroenj\",\"followers_url\":\"https://api.github.com/users/jeroenj/followers\",\"following_url\":\"https://api.github.com/users/jeroenj/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jeroenj/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jeroenj/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jeroenj/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jeroenj/orgs\",\"repos_url\":\"https://api.github.com/users/jeroenj/repos\",\"events_url\":\"https://api.github.com/users/jeroenj/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jeroenj/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-13T10:21:19Z\",\"updated_at\":\"2013-05-13T10:21:19Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"The inclusion/exclusion validator will incorrectly mark values as valid when used with ranges of strings/symbols.\\r\\n\\r\\nExample:\\r\\n```ruby\\r\\nclass Certificate < ActiveRecord::Base\\r\\n attribute :color # which is a letter from :D to :M\\r\\n validates :color, inclusion: {in: :D..:M}\\r\\nend\\r\\n\\r\\nc = Certificate.new color: :F\\r\\nc.valid?\\r\\n# => true\\r\\n\\r\\nc = Certificate.new color: :FG\\r\\nc.valid?\\r\\n# => true\\r\\n```\\r\\n\\r\\nOne would expect `:FG` to be invalid. However it is valid because `:D..:M` is a range. For ranges the `#cover?` method will be used (https://github.com/rails/rails/blob/master/activemodel/lib/active_model/validations/clusivity.rb#L37).\\r\\n\\r\\nSo:\\r\\n```ruby\\r\\n(:D..:M).include? :F\\r\\n# => true\\r\\n\\r\\n(:D..:M).cover? :F\\r\\n# => true\\r\\n\\r\\n(:D..:M).include? :FG\\r\\n# => false\\r\\n\\r\\n(:D..:M).cover? :FG\\r\\n# => true\\r\\n```\\r\\n\\r\\nThis is because the `#cover?` method compares the value against the first and last values of the range.\\r\\nFor validations it make sense to use `#cover?` when the range numbers. But it doesn't make sense when the range contains strings or symbols (or any other non-numeric value).\\r\\n\\r\\nA solution would be to check it the range is numeric, and if it is to use `#cover?`, if not `#include?`. I'm not sure if that is the best approach. I'm open for ideas and I'll see if I can create a patch for this issue.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10589\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10589/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10589/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10589/events\",\"html_url\":\"https://github.com/rails/rails/issues/10589\",\"id\":14248862,\"number\":10589,\"title\":\"Make AR::Base#changed_attributes to return indifferent hash\",\"user\":{\"login\":\"bogdan\",\"id\":122436,\"avatar_url\":\"https://secure.gravatar.com/avatar/91913f6ab8085bab0f2aa43995ba8ca2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"91913f6ab8085bab0f2aa43995ba8ca2\",\"url\":\"https://api.github.com/users/bogdan\",\"html_url\":\"https://github.com/bogdan\",\"followers_url\":\"https://api.github.com/users/bogdan/followers\",\"following_url\":\"https://api.github.com/users/bogdan/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/bogdan/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/bogdan/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/bogdan/subscriptions\",\"organizations_url\":\"https://api.github.com/users/bogdan/orgs\",\"repos_url\":\"https://api.github.com/users/bogdan/repos\",\"events_url\":\"https://api.github.com/users/bogdan/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/bogdan/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":2,\"created_at\":\"2013-05-13T07:46:37Z\",\"updated_at\":\"2013-05-13T15:02:53Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10589\",\"diff_url\":\"https://github.com/rails/rails/pull/10589.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10589.patch\"},\"body\":\"`changed_attributes` hash with symbols as keys has better semantics.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10583\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10583/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10583/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10583/events\",\"html_url\":\"https://github.com/rails/rails/issues/10583\",\"id\":14240948,\"number\":10583,\"title\":\"Polymorphic join validation error on create\",\"user\":{\"login\":\"jwaldrip\",\"id\":43164,\"avatar_url\":\"https://secure.gravatar.com/avatar/ca94b06e32f746968f0aec970a702a0c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"ca94b06e32f746968f0aec970a702a0c\",\"url\":\"https://api.github.com/users/jwaldrip\",\"html_url\":\"https://github.com/jwaldrip\",\"followers_url\":\"https://api.github.com/users/jwaldrip/followers\",\"following_url\":\"https://api.github.com/users/jwaldrip/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jwaldrip/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jwaldrip/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jwaldrip/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jwaldrip/orgs\",\"repos_url\":\"https://api.github.com/users/jwaldrip/repos\",\"events_url\":\"https://api.github.com/users/jwaldrip/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jwaldrip/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-12T22:33:17Z\",\"updated_at\":\"2013-05-16T04:50:37Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I can seem to get this one to work. I keep getting validation errors when trying to create objects via the association.\\r\\n\\r\\n***ERROR***\\r\\n```\\r\\n[6] pry(main)> Account.first.users.create!\\r\\n Account Load (0.6ms) SELECT \\\"account\\\".* FROM \\\"account\\\" ORDER BY \\\"account\\\".\\\"id\\\" ASC LIMIT 1\\r\\n (0.2ms) BEGIN\\r\\n (0.2ms) ROLLBACK\\r\\nActiveRecord::RecordInvalid: Validation failed: Account can't be blank\\r\\nfrom /Users/jwaldrip/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/activerecord-4.0.0.rc1/lib/active_record/validations.rb:57:in `save!'\\r\\n```\\r\\n\\r\\n***CODE***\\r\\n\\r\\n```ruby\\r\\nclass Account < ActiveRecord::Base\\r\\n\\r\\n has_many :permitted_permissions, class_name: 'Permission', as: :permissible, inverse_of: :permissible\\r\\n has_many :users, through: :permitted_permissions, source: :accessible, source_type: 'User', inverse_of: :account\\r\\n\\r\\nend\\r\\n\\r\\nclass User < ActiveRecord::Base\\r\\n\\r\\n has_one :account_accessible_permission, class_name: 'Permission', as: :accessible, inverse_of: :accessible\\r\\n has_one :account, through: :account_accessible_permission, source: :permissible, source_type: 'Account', inverse_of: :users\\r\\n\\r\\n validates_presence_of :account\\r\\n\\r\\nend\\r\\n\\r\\nclass Permission < ActiveRecord::Base\\r\\n\\r\\n validates_uniqueness_of :accessible_id, scope: [:accessible_type, :permissible_id, :permissible_type]\\r\\n\\r\\n belongs_to :permissible, polymorphic: true\\r\\n belongs_to :accessible, polymorphic: true\\r\\n\\r\\nend\\r\\n\\r\\n```\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10582\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10582/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10582/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10582/events\",\"html_url\":\"https://github.com/rails/rails/issues/10582\",\"id\":14240684,\"number\":10582,\"title\":\"Sprockets under Ruby 2.0 and Rails 4.0rc1 ignores environment assets.precompile path appends\",\"user\":{\"login\":\"jim-12gigs\",\"id\":871535,\"avatar_url\":\"https://secure.gravatar.com/avatar/e1f8caca4517e7fefbbd13ad0ebe741a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"e1f8caca4517e7fefbbd13ad0ebe741a\",\"url\":\"https://api.github.com/users/jim-12gigs\",\"html_url\":\"https://github.com/jim-12gigs\",\"followers_url\":\"https://api.github.com/users/jim-12gigs/followers\",\"following_url\":\"https://api.github.com/users/jim-12gigs/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jim-12gigs/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jim-12gigs/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jim-12gigs/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jim-12gigs/orgs\",\"repos_url\":\"https://api.github.com/users/jim-12gigs/repos\",\"events_url\":\"https://api.github.com/users/jim-12gigs/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jim-12gigs/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/asset+pipeline\",\"name\":\"asset pipeline\",\"color\":\"d7e102\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":{\"url\":\"https://api.github.com/repos/rails/rails/milestones/9\",\"labels_url\":\"https://api.github.com/repos/rails/rails/milestones/9/labels\",\"id\":44893,\"number\":9,\"title\":\"4.0.0\",\"description\":\"Changes that break 3.x API.\",\"creator\":{\"login\":\"jeremy\",\"id\":199,\"avatar_url\":\"https://secure.gravatar.com/avatar/24d2f8804e6bb4b7ea6bd11e0a586470?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"24d2f8804e6bb4b7ea6bd11e0a586470\",\"url\":\"https://api.github.com/users/jeremy\",\"html_url\":\"https://github.com/jeremy\",\"followers_url\":\"https://api.github.com/users/jeremy/followers\",\"following_url\":\"https://api.github.com/users/jeremy/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jeremy/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jeremy/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jeremy/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jeremy/orgs\",\"repos_url\":\"https://api.github.com/users/jeremy/repos\",\"events_url\":\"https://api.github.com/users/jeremy/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jeremy/received_events\",\"type\":\"User\"},\"open_issues\":3,\"closed_issues\":89,\"state\":\"open\",\"created_at\":\"2011-10-09T02:53:46Z\",\"updated_at\":\"2013-05-16T20:08:49Z\",\"due_on\":null},\"comments\":5,\"created_at\":\"2013-05-12T22:07:52Z\",\"updated_at\":\"2013-05-15T19:15:30Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"This line is ignored in config/environments/production.rb, but works in application.rb. \\r\\n\\r\\nconfig.assets.precompile += %w(vendor/*')\\r\\n\\r\\nSprockets also fails to compile jquery-ui images in vendor/assets/stylesheets/images no matter where you put this line.\\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10579\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10579/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10579/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10579/events\",\"html_url\":\"https://github.com/rails/rails/issues/10579\",\"id\":14237302,\"number\":10579,\"title\":\"Test two databases - throw error at rollback between test cases.\",\"user\":{\"login\":\"cchavez\",\"id\":913511,\"avatar_url\":\"https://secure.gravatar.com/avatar/8ad2db037ea091f2b69e0a52c50a6894?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"8ad2db037ea091f2b69e0a52c50a6894\",\"url\":\"https://api.github.com/users/cchavez\",\"html_url\":\"https://github.com/cchavez\",\"followers_url\":\"https://api.github.com/users/cchavez/followers\",\"following_url\":\"https://api.github.com/users/cchavez/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/cchavez/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/cchavez/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/cchavez/subscriptions\",\"organizations_url\":\"https://api.github.com/users/cchavez/orgs\",\"repos_url\":\"https://api.github.com/users/cchavez/repos\",\"events_url\":\"https://api.github.com/users/cchavez/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/cchavez/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-12T17:19:04Z\",\"updated_at\":\"2013-05-12T17:22:42Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Hi all.\\r\\n\\r\\nI have a application that use two database and the application works fine, I'm writing test cases and I have the issue when I have multiple test cases in the same file I got the following error:\\r\\n\\r\\n Failure/Error: Unable to find matching line from backtrace\\r\\n ActiveRecord::StatementInvalid:\\r\\n ArgumentError: prepare called on a closed database: rollback transaction\\r\\n\\r\\nmy database configuration is:\\r\\n\\r\\ntest:\\r\\n adapter: sqlite3\\r\\n database: db/test.sqlite3\\r\\n pool: 5\\r\\n timeout: 5000\\r\\n\\r\\ntest_published:\\r\\n adapter: sqlite3\\r\\n database: db/test_published.sqlite3\\r\\n pool: 5\\r\\n timeout: 5000\\r\\n\\r\\nIn the application I switch between database using:\\r\\n\\r\\nPcdObject.establish_connection \\\"\#{Rails.env}\\\"\\r\\nPcdObject.establish_connection \\\"\#{Rails.env}_published\\\"\\r\\n\\r\\nMy test cases are something like:\\r\\n\\r\\ndescribe \\\"Something\\\" do\\r\\n describe \\\"Something more\\\" do\\r\\n it \\\"A\\\" do\\r\\n ....\\r\\n end\\r\\n it \\\"B\\\" do\\r\\n ....\\r\\n end\\r\\n end\\r\\nend\\r\\n\\r\\nSo, when the test B is executed I got that error, the following is the full stack trace:\\r\\n\\r\\n Failure/Error: Unable to find matching line from backtrace\\r\\n ActiveRecord::StatementInvalid:\\r\\n ArgumentError: prepare called on a closed database: rollback transaction\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `initialize'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `new'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `prepare'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:134:in `execute'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:515:in `rollback'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/connection_adapters/sqlite_adapter.rb:322:in `block in rollback_db_transaction'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activesupport-3.2.13/lib/active_support/notifications/instrumenter.rb:20:in `instrument'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/connection_adapters/sqlite_adapter.rb:322:in `rollback_db_transaction'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:880:in `block in teardown_fixtures'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:878:in `each'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/activerecord-3.2.13/lib/active_record/fixtures.rb:878:in `teardown_fixtures'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-rails-2.12.0/lib/rspec/rails/adapters.rb:29:in `block (2 levels) in teardown'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:468:in `instance_eval'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:468:in `instance_eval_with_rescue'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example.rb:242:in `instance_eval_with_rescue'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/hooks.rb:35:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/hooks.rb:72:in `block in run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/hooks.rb:72:in `each'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/hooks.rb:72:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/hooks.rb:424:in `run_hook'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:337:in `run_after_each_hooks'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example.rb:304:in `run_after_each'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example.rb:120:in `block in run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example.rb:254:in `with_around_each_hooks'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example.rb:111:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:388:in `block in run_examples'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:384:in `map'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:384:in `run_examples'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:369:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:370:in `block in run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:370:in `map'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:370:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:28:in `block (2 levels) in run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:28:in `map'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:28:in `block in run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/reporter.rb:34:in `report'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:25:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/runner.rb:80:in `run'\\r\\n # /home/cchavez/.rvm/gems/ruby-1.9.3-p385@pcd-bookeditor/gems/rspec-core-2.12.2/lib/rspec/core/runner.rb:17:in `block in autorun'\\r\\n\\r\\nI know the test cases write on both database because when I deactive the transactional feature config.use_transactional_fixtures = false, the records exists on both test databases. \\r\\n\\r\\nI'm writing RSpec test cases. I'm using Rails 3.2.13.\\r\\n\\r\\nThe other Issue I have is that Rails only rebuild the \\\"test\\\" database, when run the test cases is not aware about the other database and only rebuild this one. I solved that writing a rake task that I will be execute when the \\\"test\\\" database is rebuilt, I did not find any better solution, the rake task is:\\r\\n\\r\\nlib/tasks/db.rake\\r\\n\\r\\nnamespace :db do\\r\\n namespace :test do\\r\\n task :load_schema do\\r\\n #Get the path of the test database.\\r\\n feed_database_config = ActiveRecord::Base.configurations[\\\"test\\\"]\\r\\n feed_path = feed_database_config['database']\\r\\n feed_db_file = \\\"\#{Rails.root}/\#{feed_path}\\\"\\r\\n #Get the path of the second test database.\\r\\n published_database_config = ActiveRecord::Base.configurations[\\\"test_published\\\"]\\r\\n published_path = published_database_config['database']\\r\\n published_db_file = \\\"\#{Rails.root}/\#{published_path}\\\"\\r\\n #Copy test database to the second database.\\r\\n FileUtils.cp(feed_db_file, published_db_file)\\r\\n end\\r\\n end\\r\\nend\\r\\n\\r\\nOf course that works for sqlite.\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10566\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10566/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10566/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10566/events\",\"html_url\":\"https://github.com/rails/rails/issues/10566\",\"id\":14218410,\"number\":10566,\"title\":\"do not load all child records for inverse case\",\"user\":{\"login\":\"neerajdotname\",\"id\":6399,\"avatar_url\":\"https://secure.gravatar.com/avatar/934f858e451cf9b771996b2940cd696b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"934f858e451cf9b771996b2940cd696b\",\"url\":\"https://api.github.com/users/neerajdotname\",\"html_url\":\"https://github.com/neerajdotname\",\"followers_url\":\"https://api.github.com/users/neerajdotname/followers\",\"following_url\":\"https://api.github.com/users/neerajdotname/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/neerajdotname/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/neerajdotname/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/neerajdotname/subscriptions\",\"organizations_url\":\"https://api.github.com/users/neerajdotname/orgs\",\"repos_url\":\"https://api.github.com/users/neerajdotname/repos\",\"events_url\":\"https://api.github.com/users/neerajdotname/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/neerajdotname/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-11T06:50:05Z\",\"updated_at\":\"2013-05-11T18:08:31Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10566\",\"diff_url\":\"https://github.com/rails/rails/pull/10566.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10566.patch\"},\"body\":\"currently `post.comments.find(Comment.first.id)` would load all\\r\\ncomments for the given post to set the inverse association.\\r\\n\\r\\nThis has a huge performance penalty. Because if post has 100k\\r\\nrecords and all these 100k records would be loaded in memory\\r\\neven though the comment id was supplied.\\r\\n\\r\\nFix is to use in-memory records only if loaded? is true. Otherwise\\r\\nload the records using full sql.\\r\\n\\r\\nFixes #10509\\r\\n\\r\\n/cc @wangjohn @jeremy @jonleighton\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10565\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10565/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10565/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10565/events\",\"html_url\":\"https://github.com/rails/rails/issues/10565\",\"id\":14216436,\"number\":10565,\"title\":\"Improved grammar and replaced 'dbs' slang with 'databases'\",\"user\":{\"login\":\"prathamesh-sonpatki\",\"id\":621238,\"avatar_url\":\"https://secure.gravatar.com/avatar/1b0973b64704738dbc8ce24d8382bb1f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"1b0973b64704738dbc8ce24d8382bb1f\",\"url\":\"https://api.github.com/users/prathamesh-sonpatki\",\"html_url\":\"https://github.com/prathamesh-sonpatki\",\"followers_url\":\"https://api.github.com/users/prathamesh-sonpatki/followers\",\"following_url\":\"https://api.github.com/users/prathamesh-sonpatki/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/prathamesh-sonpatki/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/prathamesh-sonpatki/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/prathamesh-sonpatki/subscriptions\",\"organizations_url\":\"https://api.github.com/users/prathamesh-sonpatki/orgs\",\"repos_url\":\"https://api.github.com/users/prathamesh-sonpatki/repos\",\"events_url\":\"https://api.github.com/users/prathamesh-sonpatki/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/prathamesh-sonpatki/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":6,\"created_at\":\"2013-05-11T02:33:35Z\",\"updated_at\":\"2013-05-15T09:21:19Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10565\",\"diff_url\":\"https://github.com/rails/rails/pull/10565.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10565.patch\"},\"body\":\"\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10561\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10561/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10561/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10561/events\",\"html_url\":\"https://github.com/rails/rails/issues/10561\",\"id\":14204740,\"number\":10561,\"title\":\"Rather than raising ThrowResult when construct_limited_ids_conditions comes up empty, set the relation to NullRelation and rely on its results.\",\"user\":{\"login\":\"Empact\",\"id\":5470,\"avatar_url\":\"https://secure.gravatar.com/avatar/b4493ae064e6e2841f376fd1dc12b7ba?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"b4493ae064e6e2841f376fd1dc12b7ba\",\"url\":\"https://api.github.com/users/Empact\",\"html_url\":\"https://github.com/Empact\",\"followers_url\":\"https://api.github.com/users/Empact/followers\",\"following_url\":\"https://api.github.com/users/Empact/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/Empact/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/Empact/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/Empact/subscriptions\",\"organizations_url\":\"https://api.github.com/users/Empact/orgs\",\"repos_url\":\"https://api.github.com/users/Empact/repos\",\"events_url\":\"https://api.github.com/users/Empact/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/Empact/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":1,\"created_at\":\"2013-05-10T19:04:21Z\",\"updated_at\":\"2013-05-13T19:29:48Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10561\",\"diff_url\":\"https://github.com/rails/rails/pull/10561.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10561.patch\"},\"body\":\"This will help avoid errors like 2fcafee, because in most cases NullRelation will do the right thing. Minor bonus is avoiding the use of exceptions for flow control.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10559\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10559/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10559/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10559/events\",\"html_url\":\"https://github.com/rails/rails/issues/10559\",\"id\":14197399,\"number\":10559,\"title\":\"routing error after update from rails 3.2 to 4.0.0.rc1\",\"user\":{\"login\":\"rossi-jeff\",\"id\":671064,\"avatar_url\":\"https://secure.gravatar.com/avatar/42c3ee2d93d2b47b207ef959e4067b78?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"42c3ee2d93d2b47b207ef959e4067b78\",\"url\":\"https://api.github.com/users/rossi-jeff\",\"html_url\":\"https://github.com/rossi-jeff\",\"followers_url\":\"https://api.github.com/users/rossi-jeff/followers\",\"following_url\":\"https://api.github.com/users/rossi-jeff/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/rossi-jeff/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/rossi-jeff/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/rossi-jeff/subscriptions\",\"organizations_url\":\"https://api.github.com/users/rossi-jeff/orgs\",\"repos_url\":\"https://api.github.com/users/rossi-jeff/repos\",\"events_url\":\"https://api.github.com/users/rossi-jeff/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/rossi-jeff/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activesupport\",\"name\":\"activesupport\",\"color\":\"FC9300\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/railties\",\"name\":\"railties\",\"color\":\"8BE06E\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":7,\"created_at\":\"2013-05-10T16:01:29Z\",\"updated_at\":\"2013-05-12T18:57:55Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I have an existing app under development and upgraded to try ruby 2 and rails 4. The app won't boot and I get the following trying to rake routes.\\r\\n\\r\\nSorry if this is not the right place for this but web searches for a solution have been fruitless.\\r\\n\\r\\n```\\r\\nJeffreys-Mac-mini:mongotrax jeffreyrossi$ rake routes --trace\\r\\n** Invoke routes (first_time)\\r\\n** Invoke environment (first_time)\\r\\n** Execute environment\\r\\nrake aborted!\\r\\nRails::Application::RoutesReloader#execute_if_updated delegated to updater.execute_if_updated, but updater is nil: #<Rails::Application::RoutesReloader:0x007fa48a32c810 @paths=[\\\"/Users/jeffreyrossi/svn/mongotrax/config/routes.rb\\\"], @route_sets=[#<ActionDispatch::Routing::RouteSet:0x007fa48a36c4d8>]>\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application/routes_reloader.rb:10:in `rescue in execute_if_updated'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application/routes_reloader.rb:6:in `execute_if_updated'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application/finisher.rb:69:in `block in <module:Finisher>'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/initializable.rb:30:in `instance_exec'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/initializable.rb:30:in `run'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/initializable.rb:55:in `block in run_initializers'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:150:in `block in tsort_each'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:219:in `each_strongly_connected_component_from'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:182:in `block in each_strongly_connected_component'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:180:in `each'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:180:in `each_strongly_connected_component'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/tsort.rb:148:in `tsort_each'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/initializable.rb:54:in `run_initializers'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application.rb:214:in `initialize!'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/railtie/configurable.rb:30:in `method_missing'\\r\\n/Users/jeffreyrossi/svn/mongotrax/config/environment.rb:5:in `<top (required)>'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:228:in `require'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:228:in `block in require'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:213:in `load_dependency'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:228:in `require'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application.rb:188:in `require_environment!'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/gems/railties-4.0.0.rc1/lib/rails/application.rb:248:in `block in run_tasks_blocks'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:246:in `call'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:241:in `each'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:205:in `block in invoke_prerequisites'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:203:in `each'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:203:in `invoke_prerequisites'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:183:in `block in invoke_with_call_chain'\\r\\n/Users/jeffreyrossi/.rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:143:in `invoke_task'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:101:in `block (2 levels) in top_level'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:101:in `each'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:101:in `block in top_level'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:110:in `run_with_threads'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:95:in `top_level'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:73:in `block in run'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/lib/rake/application.rb:70:in `run'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@global/gems/rake-10.0.4/bin/rake:33:in `<top (required)>'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/bin/rake:19:in `load'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/bin/rake:19:in `<main>'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/bin/ruby_noexec_wrapper:14:in `eval'\\r\\n/Users/jeffreyrossi/.rvm/gems/ruby-2.0.0-rc2@mongotrax/bin/ruby_noexec_wrapper:14:in `<main>'\\r\\nTasks: TOP => routes => environment\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10550\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10550/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10550/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10550/events\",\"html_url\":\"https://github.com/rails/rails/issues/10550\",\"id\":14185972,\"number\":10550,\"title\":\"removed explicit arguments from super call\",\"user\":{\"login\":\"akalyaev\",\"id\":1282182,\"avatar_url\":\"https://secure.gravatar.com/avatar/d83b63db79b42978fe35e120550ca180?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"d83b63db79b42978fe35e120550ca180\",\"url\":\"https://api.github.com/users/akalyaev\",\"html_url\":\"https://github.com/akalyaev\",\"followers_url\":\"https://api.github.com/users/akalyaev/followers\",\"following_url\":\"https://api.github.com/users/akalyaev/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/akalyaev/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/akalyaev/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/akalyaev/subscriptions\",\"organizations_url\":\"https://api.github.com/users/akalyaev/orgs\",\"repos_url\":\"https://api.github.com/users/akalyaev/repos\",\"events_url\":\"https://api.github.com/users/akalyaev/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/akalyaev/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":3,\"created_at\":\"2013-05-10T10:29:16Z\",\"updated_at\":\"2013-05-10T18:52:56Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10550\",\"diff_url\":\"https://github.com/rails/rails/pull/10550.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10550.patch\"},\"body\":\"Ruby will automatically forward the arguments that were passed to the method from\\r\\nwhich it's called to the parent method.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10547\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10547/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10547/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10547/events\",\"html_url\":\"https://github.com/rails/rails/issues/10547\",\"id\":14181025,\"number\":10547,\"title\":\"Extended ActiveSupport::Concern instead of regular plain hooks in Rails::Generators::Migration module\",\"user\":{\"login\":\"aditya-kapoor\",\"id\":1955930,\"avatar_url\":\"https://secure.gravatar.com/avatar/7ce4d65f432864a629d71409f1443c68?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"7ce4d65f432864a629d71409f1443c68\",\"url\":\"https://api.github.com/users/aditya-kapoor\",\"html_url\":\"https://github.com/aditya-kapoor\",\"followers_url\":\"https://api.github.com/users/aditya-kapoor/followers\",\"following_url\":\"https://api.github.com/users/aditya-kapoor/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/aditya-kapoor/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/aditya-kapoor/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/aditya-kapoor/subscriptions\",\"organizations_url\":\"https://api.github.com/users/aditya-kapoor/orgs\",\"repos_url\":\"https://api.github.com/users/aditya-kapoor/repos\",\"events_url\":\"https://api.github.com/users/aditya-kapoor/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/aditya-kapoor/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":8,\"created_at\":\"2013-05-10T07:23:14Z\",\"updated_at\":\"2013-05-15T06:03:36Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10547\",\"diff_url\":\"https://github.com/rails/rails/pull/10547.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10547.patch\"},\"body\":\"In the module Rails::Generator::Migration, we are using the benefit of ActiveSupport::Concern instead of plain old hooks so as to add methods of ClassMethods module in the class...\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10542\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10542/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10542/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10542/events\",\"html_url\":\"https://github.com/rails/rails/issues/10542\",\"id\":14178594,\"number\":10542,\"title\":\"Remove unnecessary require from active_support/inflector/methods.rb\",\"user\":{\"login\":\"waseem\",\"id\":42636,\"avatar_url\":\"https://secure.gravatar.com/avatar/20b986aecf495c7a1d9b1910bd5f2cd2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"20b986aecf495c7a1d9b1910bd5f2cd2\",\"url\":\"https://api.github.com/users/waseem\",\"html_url\":\"https://github.com/waseem\",\"followers_url\":\"https://api.github.com/users/waseem/followers\",\"following_url\":\"https://api.github.com/users/waseem/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/waseem/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/waseem/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/waseem/subscriptions\",\"organizations_url\":\"https://api.github.com/users/waseem/orgs\",\"repos_url\":\"https://api.github.com/users/waseem/repos\",\"events_url\":\"https://api.github.com/users/waseem/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/waseem/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-10T05:05:40Z\",\"updated_at\":\"2013-05-10T05:05:40Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10542\",\"diff_url\":\"https://github.com/rails/rails/pull/10542.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10542.patch\"},\"body\":\"`active_support/inflections` already requires\\r\\n`active_support/inflector/inflections`. There's no need to require it in\\r\\n`active_support/inflector/methods`.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10539\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10539/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10539/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10539/events\",\"html_url\":\"https://github.com/rails/rails/issues/10539\",\"id\":14156923,\"number\":10539,\"title\":\"Improve performance of ActiveRecord::Relation#blank?\",\"user\":{\"login\":\"davidcelis\",\"id\":36873,\"avatar_url\":\"https://secure.gravatar.com/avatar/9b0144a16ba125a94460c5d45f07efb9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"9b0144a16ba125a94460c5d45f07efb9\",\"url\":\"https://api.github.com/users/davidcelis\",\"html_url\":\"https://github.com/davidcelis\",\"followers_url\":\"https://api.github.com/users/davidcelis/followers\",\"following_url\":\"https://api.github.com/users/davidcelis/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/davidcelis/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/davidcelis/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/davidcelis/subscriptions\",\"organizations_url\":\"https://api.github.com/users/davidcelis/orgs\",\"repos_url\":\"https://api.github.com/users/davidcelis/repos\",\"events_url\":\"https://api.github.com/users/davidcelis/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/davidcelis/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":4,\"created_at\":\"2013-05-09T17:43:07Z\",\"updated_at\":\"2013-05-12T03:04:58Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10539\",\"diff_url\":\"https://github.com/rails/rails/pull/10539.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10539.patch\"},\"body\":\"This is an SQL improvement to ActiveRecord::Relation#blank?. Currently,\\r\\nit calls `to_a` on the Relation, which loads all records in the\\r\\nassociation, and calls `blank?` on the loaded Array. There are other\\r\\nways, however, to check the emptiness of an association that are far\\r\\nmore performant. `#empty?`, `#exists?` and `#any?` all attach a `LIMIT\\r\\n1` to the SQL query before firing it off, which is a nice query\\r\\nimprovement. `#blank?` should do the same! This is easily done by\\r\\nmaking `#blank?` an alias of `#empty?`.\\r\\n\\r\\nBonus performance improvements will also happen for `#present?`, which\\r\\nmerely calls the negation of `#blank?`\\r\\n\\r\\nSigned-off-by: David Celis <me@davidcel.is>\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10538\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10538/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10538/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10538/events\",\"html_url\":\"https://github.com/rails/rails/issues/10538\",\"id\":14156559,\"number\":10538,\"title\":\"scope_chain should not be mutated for other reflections\",\"user\":{\"login\":\"neerajdotname\",\"id\":6399,\"avatar_url\":\"https://secure.gravatar.com/avatar/934f858e451cf9b771996b2940cd696b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"934f858e451cf9b771996b2940cd696b\",\"url\":\"https://api.github.com/users/neerajdotname\",\"html_url\":\"https://github.com/neerajdotname\",\"followers_url\":\"https://api.github.com/users/neerajdotname/followers\",\"following_url\":\"https://api.github.com/users/neerajdotname/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/neerajdotname/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/neerajdotname/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/neerajdotname/subscriptions\",\"organizations_url\":\"https://api.github.com/users/neerajdotname/orgs\",\"repos_url\":\"https://api.github.com/users/neerajdotname/repos\",\"events_url\":\"https://api.github.com/users/neerajdotname/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/neerajdotname/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-09T17:35:05Z\",\"updated_at\":\"2013-05-09T17:35:05Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10538\",\"diff_url\":\"https://github.com/rails/rails/pull/10538.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10538.patch\"},\"body\":\"Currently `scope_chain` uses same array for building different\\r\\n`scope_chain` for different associations. During processing\\r\\nthese arrays are sometimes mutated and because of in-place\\r\\nmutation the changed `scope_chain` impacts other reflections.\\r\\n\\r\\nFix is to dup the value before adding to the `scope_chain`.\\r\\n\\r\\nFixes #3882.\\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/10537\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/10537/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/10537/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/10537/events\",\"html_url\":\"https://github.com/rails/rails/issues/10537\",\"id\":14150101,\"number\":10537,\"title\":\" #10428: Added tests for config.assets.precompile\",\"user\":{\"login\":\"pftg\",\"id\":125715,\"avatar_url\":\"https://secure.gravatar.com/avatar/712a9cc852c438c0873ef0a98f749f2e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"712a9cc852c438c0873ef0a98f749f2e\",\"url\":\"https://api.github.com/users/pftg\",\"html_url\":\"https://github.com/pftg\",\"followers_url\":\"https://api.github.com/users/pftg/followers\",\"following_url\":\"https://api.github.com/users/pftg/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/pftg/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/pftg/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/pftg/subscriptions\",\"organizations_url\":\"https://api.github.com/users/pftg/orgs\",\"repos_url\":\"https://api.github.com/users/pftg/repos\",\"events_url\":\"https://api.github.com/users/pftg/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/pftg/received_events\",\"type\":\"User\"},\"labels\":[],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-05-09T15:09:14Z\",\"updated_at\":\"2013-05-09T15:36:52Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/10537\",\"diff_url\":\"https://github.com/rails/rails/pull/10537.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/10537.patch\"},\"body\":\"Tests for bug in sprocket-rails:\\r\\n do not use value of configuration options\\r\\n which changed after environment loaded\\r\\n\\r\\nThis PR connected with https://github.com/rails/sprockets-rails/pull/50 which will resolve #10428 issue\"}]", :headers=>{"Server"=>"GitHub.com", "Date"=>"Mon, 20 May 2013 20:23:25 GMT", "Content-Type"=>"application/json; charset=utf-8", "Connection"=>"keep-alive", "Status"=>"200 OK", "X-RateLimit-Limit"=>"60", "X-RateLimit-Remaining"=>"58", "Vary"=>"Accept, Accept-Encoding", "Cache-Control"=>"public, max-age=60, s-maxage=60", "Last-Modified"=>"Mon, 20 May 2013 20:18:37 GMT", "ETag"=>"\"913a5ce41b2a2f9dbe5e0baa3dda6b79\"", "X-GitHub-Media-Type"=>"github.beta; param=3.raw; format=json", "Link"=>"<https://api.github.com/repositories/8514/issues?page=3>; rel=\"next\", <https://api.github.com/repositories/8514/issues?page=18>; rel=\"last\", <https://api.github.com/repositories/8514/issues?page=1>; rel=\"first\", <https://api.github.com/repositories/8514/issues?page=1>; rel=\"prev\"", "X-Content-Type-Options"=>"nosniff", "Content-Length"=>"108863", "Access-Control-Allow-Credentials"=>"true", "Access-Control-Expose-Headers"=>"Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes", "Access-Control-Allow-Origin"=>"*", "X-RateLimit-Reset" => "1504196685"}, :status=>200, :remote_ip=>"207.97.227.243"}
22
23
  when :last
23
- {:body=>"[{\"url\":\"https://api.github.com/repos/rails/rails/issues/2550\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/2550/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/2550/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/2550/events\",\"html_url\":\"https://github.com/rails/rails/issues/2550\",\"id\":1419513,\"number\":2550,\"title\":\"HTML Scanner parser regression\",\"user\":{\"login\":\"titanous\",\"id\":13026,\"avatar_url\":\"https://secure.gravatar.com/avatar/02319fb5cbcf9309a4bd0ea7c791e5d6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"02319fb5cbcf9309a4bd0ea7c791e5d6\",\"url\":\"https://api.github.com/users/titanous\",\"html_url\":\"https://github.com/titanous\",\"followers_url\":\"https://api.github.com/users/titanous/followers\",\"following_url\":\"https://api.github.com/users/titanous/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/titanous/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/titanous/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/titanous/subscriptions\",\"organizations_url\":\"https://api.github.com/users/titanous/orgs\",\"repos_url\":\"https://api.github.com/users/titanous/repos\",\"events_url\":\"https://api.github.com/users/titanous/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/titanous/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/actionpack\",\"name\":\"actionpack\",\"color\":\"FFF700\"}],\"state\":\"open\",\"assignee\":{\"login\":\"rafaelfranca\",\"id\":47848,\"avatar_url\":\"https://secure.gravatar.com/avatar/0525b332aafb83307b32d9747a93de03?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"0525b332aafb83307b32d9747a93de03\",\"url\":\"https://api.github.com/users/rafaelfranca\",\"html_url\":\"https://github.com/rafaelfranca\",\"followers_url\":\"https://api.github.com/users/rafaelfranca/followers\",\"following_url\":\"https://api.github.com/users/rafaelfranca/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/rafaelfranca/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/rafaelfranca/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/rafaelfranca/subscriptions\",\"organizations_url\":\"https://api.github.com/users/rafaelfranca/orgs\",\"repos_url\":\"https://api.github.com/users/rafaelfranca/repos\",\"events_url\":\"https://api.github.com/users/rafaelfranca/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/rafaelfranca/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":10,\"created_at\":\"2011-08-16T23:48:44Z\",\"updated_at\":\"2012-06-29T23:57:47Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"@tenderlove:\\r\\n\\r\\n586a944ddd4d03e66dea1093306147594748037a causes at least two different types of false-positive parse errors that did not exist in 3.0.9:\\r\\n\\r\\n```ruby\\r\\ndef test_xml_tag\\r\\n assert_nothing_raised { HTML::Document.new('<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>', true, true) }\\r\\nend\\r\\n\\r\\ndef test_js\\r\\n assert_nothing_raised { HTML::Document.new('<script>1<=2</script>', true, true) }\\r\\nend\\r\\n```\\r\\n\\r\\n```\\r\\nLoaded suite test/template/html-scanner/document_test\\r\\nStarted\\r\\n......F........F\\r\\nFinished in 0.016336 seconds.\\r\\n\\r\\n 1) Failure:\\r\\ntest_js(DocumentTest)\\r\\n [test/template/html-scanner/document_test.rb:153:in `test_js']:\\r\\nException raised:\\r\\nClass: <RuntimeError>\\r\\nMessage: <\\\"expected > (got \\\\\\\"\\\\\\\" for <=2, {})\\\">\\r\\n---Backtrace---\\r\\n/Users/titanous/src/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb:194:in `parse'\\r\\n/Users/titanous/src/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb:20:in `initialize'\\r\\ntest/template/html-scanner/document_test.rb:153:in `new'\\r\\ntest/template/html-scanner/document_test.rb:153:in `test_js'\\r\\ntest/template/html-scanner/document_test.rb:153:in `test_js'\\r\\n---------------\\r\\n\\r\\n 2) Failure:\\r\\ntest_xml_tag(DocumentTest)\\r\\n [test/template/html-scanner/document_test.rb:149:in `test_xml_tag']:\\r\\nException raised:\\r\\nClass: <RuntimeError>\\r\\nMessage: <\\\"expected > (got \\\\\\\"?>\\\\\\\" for <?xml version=\\\\\\\"1.0\\\\\\\" encoding=\\\\\\\"UTF-8\\\\\\\"?>, {\\\\\\\"encoding\\\\\\\"=>\\\\\\\"UTF-8\\\\\\\", \\\\\\\"version\\\\\\\"=>\\\\\\\"1.0\\\\\\\"})\\\">\\r\\n---Backtrace---\\r\\n/Users/titanous/src/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb:194:in `parse'\\r\\n/Users/titanous/src/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb:20:in `initialize'\\r\\ntest/template/html-scanner/document_test.rb:149:in `new'\\r\\ntest/template/html-scanner/document_test.rb:149:in `test_xml_tag'\\r\\ntest/template/html-scanner/document_test.rb:149:in `test_xml_tag'\\r\\n---------------\\r\\n\\r\\n16 tests, 30 assertions, 2 failures, 0 errors\\r\\n```\\r\\n\\r\\n \"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/2488\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/2488/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/2488/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/2488/events\",\"html_url\":\"https://github.com/rails/rails/issues/2488\",\"id\":1383250,\"number\":2488,\"title\":\"Add an assertion for testing redirect in routes.rb\",\"user\":{\"login\":\"mattwynne\",\"id\":19260,\"avatar_url\":\"https://secure.gravatar.com/avatar/cdf378de2284d8acf137122e541caa28?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"cdf378de2284d8acf137122e541caa28\",\"url\":\"https://api.github.com/users/mattwynne\",\"html_url\":\"https://github.com/mattwynne\",\"followers_url\":\"https://api.github.com/users/mattwynne/followers\",\"following_url\":\"https://api.github.com/users/mattwynne/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/mattwynne/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/mattwynne/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/mattwynne/subscriptions\",\"organizations_url\":\"https://api.github.com/users/mattwynne/orgs\",\"repos_url\":\"https://api.github.com/users/mattwynne/repos\",\"events_url\":\"https://api.github.com/users/mattwynne/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/mattwynne/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/actionpack\",\"name\":\"actionpack\",\"color\":\"FFF700\"}],\"state\":\"open\",\"assignee\":{\"login\":\"pixeltrix\",\"id\":6321,\"avatar_url\":\"https://secure.gravatar.com/avatar/b14001f2b40640dd6cb63f0e8f1f4869?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"b14001f2b40640dd6cb63f0e8f1f4869\",\"url\":\"https://api.github.com/users/pixeltrix\",\"html_url\":\"https://github.com/pixeltrix\",\"followers_url\":\"https://api.github.com/users/pixeltrix/followers\",\"following_url\":\"https://api.github.com/users/pixeltrix/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/pixeltrix/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/pixeltrix/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/pixeltrix/subscriptions\",\"organizations_url\":\"https://api.github.com/users/pixeltrix/orgs\",\"repos_url\":\"https://api.github.com/users/pixeltrix/repos\",\"events_url\":\"https://api.github.com/users/pixeltrix/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/pixeltrix/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":22,\"created_at\":\"2011-08-10T22:07:46Z\",\"updated_at\":\"2012-07-01T18:33:03Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I'd like to use the redirect method in my routes configuration, but I'd also like to be able to cover it with unit tests for the routing.\\r\\n\\r\\nI can't see an assertion for the routing in [1] that will test a redirect in the routes. Did I miss something?\\r\\n\\r\\n[1] https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/testing/assertions/routing.rb\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/2189\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/2189/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/2189/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/2189/events\",\"html_url\":\"https://github.com/rails/rails/issues/2189\",\"id\":1270673,\"number\":2189,\"title\":\"HABTM: Assocations can be created in the wrong database\",\"user\":{\"login\":\"christophersansone\",\"id\":686233,\"avatar_url\":\"https://secure.gravatar.com/avatar/3e71c060ce81d7fcfc56d7b84327b6a6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"3e71c060ce81d7fcfc56d7b84327b6a6\",\"url\":\"https://api.github.com/users/christophersansone\",\"html_url\":\"https://github.com/christophersansone\",\"followers_url\":\"https://api.github.com/users/christophersansone/followers\",\"following_url\":\"https://api.github.com/users/christophersansone/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/christophersansone/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/christophersansone/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/christophersansone/subscriptions\",\"organizations_url\":\"https://api.github.com/users/christophersansone/orgs\",\"repos_url\":\"https://api.github.com/users/christophersansone/repos\",\"events_url\":\"https://api.github.com/users/christophersansone/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/christophersansone/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/bug\",\"name\":\"bug\",\"color\":\"444444\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":6,\"created_at\":\"2011-07-22T15:42:06Z\",\"updated_at\":\"2012-11-27T16:53:19Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"In has_and_belongs_to_many_association.rb, the insert_record() and delete_records() functions use Arel::Table.new() to build the records to insert and delete. The problem with the current implementation is that, no matter what, it will create the association in the default database, regardless of which database the association owner (@owner) is in. This will lead to the association record being in a different database than the owner record, which seems incorrect and unintended.\\r\\n\\r\\nThe resolution is simple: when Arel::Table.new() is called in insert_record() and delete_records(), the owner's arel engine should be passed in as the second parameter:\\r\\n\\r\\n```ruby\\r\\nrelation = Arel::Table.new(@reflection.options[:join_table], @owner.class.arel_engine)\\r\\n```\\r\\n\\r\\nSince the owner's connection is used consistently throughout this unit, it seems to make sense that the owner's arel engine is used here as well.\\r\\n\\r\\nIn doing a quick search through the ActiveRecord code, it looks like the arel engine is specified almost every time Arel::Table.new() is called, so this seems like a straight-forward, correct, and consistent fix. There was one other method I noticed where this fix seems necessary as well: HasManyAssociation.delete_records().\\r\\n\\r\\nThank you very much!\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/2045\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/2045/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/2045/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/2045/events\",\"html_url\":\"https://github.com/rails/rails/issues/2045\",\"id\":1211180,\"number\":2045,\"title\":\"Add possibility to render partial from subfolder with inheritance\",\"user\":{\"login\":\"aratak\",\"id\":30642,\"avatar_url\":\"https://secure.gravatar.com/avatar/e697cf309b79a8fa16903931ce3a0b98?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"e697cf309b79a8fa16903931ce3a0b98\",\"url\":\"https://api.github.com/users/aratak\",\"html_url\":\"https://github.com/aratak\",\"followers_url\":\"https://api.github.com/users/aratak/followers\",\"following_url\":\"https://api.github.com/users/aratak/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/aratak/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/aratak/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/aratak/subscriptions\",\"organizations_url\":\"https://api.github.com/users/aratak/orgs\",\"repos_url\":\"https://api.github.com/users/aratak/repos\",\"events_url\":\"https://api.github.com/users/aratak/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/aratak/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/actionview\",\"name\":\"actionview\",\"color\":\"d7e102\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":31,\"created_at\":\"2011-07-12T20:20:44Z\",\"updated_at\":\"2013-03-14T17:01:36Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/2045\",\"diff_url\":\"https://github.com/rails/rails/pull/2045.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/2045.patch\"},\"body\":\"The new feature named \\\"template inheritance\\\" don't allow to render partial inside subfolders. Partials with slash in path name can be found only from views root folder. \\r\\n\\r\\nMy pull request extends behavior of template inheritance, and allow to render partial inside subfolders with inheritance feature. I suggest to use ```./``` at the start, and this partial will be found with relative path (from current directory). So, \\r\\n\\r\\n```\\r\\n render :partial => \\\"./head/menu\\\"\\r\\n```\\r\\n\\r\\ncan be found in several folders, as template inheritance means:\\r\\n\\r\\n```\\r\\n - views\\r\\n - application\\r\\n - head\\r\\n - menu.html.erb\\r\\n - controller_name\\r\\n - head\\r\\n - menu.html.erb\\r\\n```\\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/1769\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/1769/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/1769/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/1769/events\",\"html_url\":\"https://github.com/rails/rails/issues/1769\",\"id\":1079942,\"number\":1769,\"title\":\"link_to / form_for doesn't work for singular resource\",\"user\":{\"login\":\"Godisemo\",\"id\":847898,\"avatar_url\":\"https://secure.gravatar.com/avatar/840125df8ab996b3f6f84327e4becb30?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"840125df8ab996b3f6f84327e4becb30\",\"url\":\"https://api.github.com/users/Godisemo\",\"html_url\":\"https://github.com/Godisemo\",\"followers_url\":\"https://api.github.com/users/Godisemo/followers\",\"following_url\":\"https://api.github.com/users/Godisemo/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/Godisemo/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/Godisemo/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/Godisemo/subscriptions\",\"organizations_url\":\"https://api.github.com/users/Godisemo/orgs\",\"repos_url\":\"https://api.github.com/users/Godisemo/repos\",\"events_url\":\"https://api.github.com/users/Godisemo/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/Godisemo/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/actionview\",\"name\":\"actionview\",\"color\":\"d7e102\"}],\"state\":\"open\",\"assignee\":{\"login\":\"pixeltrix\",\"id\":6321,\"avatar_url\":\"https://secure.gravatar.com/avatar/b14001f2b40640dd6cb63f0e8f1f4869?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"b14001f2b40640dd6cb63f0e8f1f4869\",\"url\":\"https://api.github.com/users/pixeltrix\",\"html_url\":\"https://github.com/pixeltrix\",\"followers_url\":\"https://api.github.com/users/pixeltrix/followers\",\"following_url\":\"https://api.github.com/users/pixeltrix/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/pixeltrix/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/pixeltrix/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/pixeltrix/subscriptions\",\"organizations_url\":\"https://api.github.com/users/pixeltrix/orgs\",\"repos_url\":\"https://api.github.com/users/pixeltrix/repos\",\"events_url\":\"https://api.github.com/users/pixeltrix/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/pixeltrix/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":28,\"created_at\":\"2011-06-19T09:32:54Z\",\"updated_at\":\"2013-05-09T21:23:31Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"In my routes I have\\r\\n\\r\\n```ruby\\r\\nresource :company\\r\\n```\\r\\n\\r\\nand in my views\\r\\n\\r\\n```erb\\r\\n<% form_for(@store) do |f| %>\\r\\n \xE2\x80\xA6\\r\\n<% end %>\\r\\n```\\r\\n\\r\\nWhen \\r\\n\\r\\nnew action gets an error when rendering\\r\\n\\r\\n```undefined method `hash_for_companies_path' for #<Module:0x00000102bfd3f0>```\\r\\n\\r\\nThe stack trace reviels that the problem occurs in\\r\\n\\r\\n```lib/action_dispatch/routing/polymorphic_routes.rb:133:in `polymorphic_url'```\\r\\n\\r\\nedit action can render without errors but the forms url is ```/company.4``` where 4 is the id of the company.\\r\\n\\r\\nThis seems to be a bug that has been around for a very long time so I think it's time to fix it.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/1627\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/1627/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/1627/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/1627/events\",\"html_url\":\"https://github.com/rails/rails/issues/1627\",\"id\":1034963,\"number\":1627,\"title\":\"AR 3.1 / pgbouncer / PostgreSQL issue with prepared statements\",\"user\":{\"login\":\"underley\",\"id\":58145,\"avatar_url\":\"https://secure.gravatar.com/avatar/2dd511b5ed409c823accebe21776e78a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"2dd511b5ed409c823accebe21776e78a\",\"url\":\"https://api.github.com/users/underley\",\"html_url\":\"https://github.com/underley\",\"followers_url\":\"https://api.github.com/users/underley/followers\",\"following_url\":\"https://api.github.com/users/underley/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/underley/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/underley/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/underley/subscriptions\",\"organizations_url\":\"https://api.github.com/users/underley/orgs\",\"repos_url\":\"https://api.github.com/users/underley/repos\",\"events_url\":\"https://api.github.com/users/underley/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/underley/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":{\"login\":\"tenderlove\",\"id\":3124,\"avatar_url\":\"https://secure.gravatar.com/avatar/f29327647a9cff5c69618bae420792ea?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f29327647a9cff5c69618bae420792ea\",\"url\":\"https://api.github.com/users/tenderlove\",\"html_url\":\"https://github.com/tenderlove\",\"followers_url\":\"https://api.github.com/users/tenderlove/followers\",\"following_url\":\"https://api.github.com/users/tenderlove/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/tenderlove/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/tenderlove/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/tenderlove/subscriptions\",\"organizations_url\":\"https://api.github.com/users/tenderlove/orgs\",\"repos_url\":\"https://api.github.com/users/tenderlove/repos\",\"events_url\":\"https://api.github.com/users/tenderlove/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/tenderlove/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":33,\"created_at\":\"2011-06-10T08:23:41Z\",\"updated_at\":\"2013-05-18T12:37:18Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Using exec_cache with pgbouncer in transaction mode, as the connections pool can cause random problems.\\r\\n\\r\\nScenario:\\r\\n- the application performs a query through ActiveRecord:\\r\\n\\r\\nSomething.find 2\\r\\nSomething Load (0.9ms) SELECT \\\"somethings\\\" .* FROM \\\"somethings\\\" WHERE \\\"somethings.\\\" Id \\\"= $ 1 LIMIT 1 [[\\\" id \\\", 2]]\\r\\n\\r\\n- pgbouncer connects to the backend (lets call it PG-1)\\r\\n- ActiveRecord creates a prepared statement\\r\\n- pgbouncer prepares for the backend PG-1 prepared statement called a3:\\r\\n\\r\\n2011-06-10 9:34:04 EDT LOG: duration: 0.505 ms parse a3: SELECT \\\"somethings\\\" .* FROM \\\"somethings\\\" WHERE \\\"somethings.\\\" Id \\\"= $ 1 LIMIT 1\\r\\n\\r\\n- ActiveRecord execute prepared statement\\r\\n- pgbouncer performs pg backend EXECUTE a3 (...) on PG-1\\r\\n\\r\\n> 2011-06-10 9:34:04 EDT LOG: duration: 0.048 ms bind a3: SELECT \\\"somethings\\\" .* FROM \\\"somethings\\\" WHERE \\\"somethings.\\\" Id \\\"= $ 1 LIMIT 1\\r\\n> 2011-06-10 9:34:04 GMT DETAIL: parameters: $ 1 = '2 '\\r\\n> 2011-06-10 9:34:04 EDT LOG: duration: 0.045 ms execute a3: SELECT \\\"somethings\\\" .* FROM \\\"somethings\\\" WHERE \\\"somethings.\\\" Id \\\"= $ 1 LIMIT 1\\r\\n> 2011-06-10 9:34:04 GMT DETAIL: parameters: $ 1 = '2 '\\r\\n\\r\\n- the application receives the result\\r\\n\\r\\n> Something Id: 2, symbol: \\\"sss2\\\", description: nil, created_at: \\\"2011-06-10 07:19:34\\\", updated_at: \\\"2011-06-10 07:19:34\\\"\\r\\n\\r\\n- at this time a different application process connects to pgbouncer, goes to the backend PG-1 and takes it (for example - with begin transaction)\\r\\n- the first application process once again executes the same query, with other parameters\\r\\n\\r\\nSomething.find 3\\r\\n\\r\\n- pgbouncer connects to the backend (but this time it goes to the PG-2, because the PG-1 is busy)\\r\\n- ActiveRecord has prepared statement in exec_cache (called a3)\\r\\n- ActiveRecord execute prepared statemnet a3\\r\\n\\r\\n> Something Load (1.2ms) SELECT \\\"somethings\\\" .* FROM \\\"somethings\\\" WHERE \\\"somethings.\\\" Id \\\"= $ 1 LIMIT 1 [[\\\" id \\\", 3]]\\r\\n\\r\\n- pgbouncer performs EXECUTE a3 (...) on backend PG-2\\r\\n- Fail - the PG-2 has no such prepared statement\\r\\n\\r\\n> PGError: ERROR: Prepared statement \\\"a3\\\" does not exist\\r\\n\\r\\nSolutions:\\r\\n- switching pgbouncer mode to session - bad, because it increases the consumption of resources\\r\\n- wrapping request in transaction - wrong - also increases consumption of resources, with additional side effec - there may be long-lasting transactions that will cause deadlocks\\r\\n- add option to not use ActiveRecord exec_cache - fix all issues with pgbouncer and additionaly another described [here](http://www.depesz.com/index.php/2008/05/10/prepared-statements-gotcha/)\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/939\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/939/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/939/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/939/events\",\"html_url\":\"https://github.com/rails/rails/issues/939\",\"id\":904741,\"number\":939,\"title\":\"ActiveRecord UNION left out\",\"user\":{\"login\":\"lighthouse-import\",\"id\":789801,\"avatar_url\":\"https://secure.gravatar.com/avatar/0c32990bcc0183c5b4ab0dc869946af7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"0c32990bcc0183c5b4ab0dc869946af7\",\"url\":\"https://api.github.com/users/lighthouse-import\",\"html_url\":\"https://github.com/lighthouse-import\",\"followers_url\":\"https://api.github.com/users/lighthouse-import/followers\",\"following_url\":\"https://api.github.com/users/lighthouse-import/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/lighthouse-import/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/lighthouse-import/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/lighthouse-import/subscriptions\",\"organizations_url\":\"https://api.github.com/users/lighthouse-import/orgs\",\"repos_url\":\"https://api.github.com/users/lighthouse-import/repos\",\"events_url\":\"https://api.github.com/users/lighthouse-import/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/lighthouse-import/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":35,\"created_at\":\"2011-05-16T04:47:12Z\",\"updated_at\":\"2013-05-09T03:48:22Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"*Imported from Lighthouse.* Original ticket at: http://rails.lighthouseapp.com/projects/8994/tickets/6591\\nCreated by **clyfe** - 2011-03-17 19:22:47 UTC\\n\\nActiveRecord returns <Arel::Nodes::Union> when I call model.union(active_relation), but it should return an ActiveRelation\\n\\n\\n1. What steps will reproduce the problem:\\n\\n class User << AR::Base; end \\n User.where(:a => 1).union(User.where(:a => 2)) \\n\\n2. What is the wrong result:\\n\\n The result is an instance of Arel::Nodes::Union\\n\\n3. What is the result that should happen instead:\\n\\n The computation should return an instance of ActiveRelation\\n\\n### THE GOOD\\n\\nThe resulting Arel::Nodes::Union object can be transformed to_sql and then we can use User.find_by_sql(sql)\\n\\n a = User.where(:a => 1).union(User.where(:a => 2))\\n sql = a.to_sql # ( SELECT \\\"users\\\".* FROM \\\"users\\\" WHERE \\\"users\\\".\\\"a\\\" = 1 UNION SELECT \\\"users\\\".* FROM \\\"users\\\" WHERE \\\"users\\\".\\\"a\\\" = 2 )\\\"\\n User.find_by_sql(sql)\\n\\n### THE ISSUE\\n\\nThe issue is obtaining an ActiveRelation object that we can further chain.\\nCaling a method (select, where, includes) on this (ActiveRelation unioned) object would have the behavior of further calling that method on each of the ActiveRelation objects involved in the UNION\\n________________________________________\\n\\nAll tough in general a UNION query can be avoided, there are some cases where the corect active relation #union functionality is needed.\\n\\nFor example this wold allow fixing issue #213 of CanCan https://github.com/ryanb/cancan/issues/213\\n\\nI would be glad to work in this issue, with a little help.\"}]", :headers=>{"Server"=>"GitHub.com", "Date"=>"Mon, 20 May 2013 20:26:18 GMT", "Content-Type"=>"application/json; charset=utf-8", "Connection"=>"keep-alive", "Status"=>"200 OK", "X-RateLimit-Limit"=>"60", "X-RateLimit-Remaining"=>"57", "Vary"=>"Accept, Accept-Encoding", "Cache-Control"=>"public, max-age=60, s-maxage=60", "Last-Modified"=>"Mon, 20 May 2013 20:05:10 GMT", "ETag"=>"\"e92faaef3a70610dd52595f9aa2926ab\"", "X-GitHub-Media-Type"=>"github.beta; param=3.raw; format=json", "Link"=>"<https://api.github.com/repositories/8514/issues?page=1>; rel=\"last\", <https://api.github.com/repositories/8514/issues?page=1>; rel=\"first\", <https://api.github.com/repositories/8514/issues?page=17>; rel=\"prev\"", "X-Content-Type-Options"=>"nosniff", "Content-Length"=>"26444", "Access-Control-Allow-Credentials"=>"true", "Access-Control-Expose-Headers"=>"Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes", "Access-Control-Allow-Origin"=>"*"}, :status=>200, :remote_ip=>"207.97.227.243"}
24
+ {:body=>"[{\"url\":\"https://api.github.com/repos/rails/rails/issues/2550\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/2550/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/2550/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/2550/events\",\"html_url\":\"https://github.com/rails/rails/issues/2550\",\"id\":1419513,\"number\":2550,\"title\":\"HTML Scanner parser regression\",\"user\":{\"login\":\"titanous\",\"id\":13026,\"avatar_url\":\"https://secure.gravatar.com/avatar/02319fb5cbcf9309a4bd0ea7c791e5d6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"02319fb5cbcf9309a4bd0ea7c791e5d6\",\"url\":\"https://api.github.com/users/titanous\",\"html_url\":\"https://github.com/titanous\",\"followers_url\":\"https://api.github.com/users/titanous/followers\",\"following_url\":\"https://api.github.com/users/titanous/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/titanous/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/titanous/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/titanous/subscriptions\",\"organizations_url\":\"https://api.github.com/users/titanous/orgs\",\"repos_url\":\"https://api.github.com/users/titanous/repos\",\"events_url\":\"https://api.github.com/users/titanous/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/titanous/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/actionpack\",\"name\":\"actionpack\",\"color\":\"FFF700\"}],\"state\":\"open\",\"assignee\":{\"login\":\"rafaelfranca\",\"id\":47848,\"avatar_url\":\"https://secure.gravatar.com/avatar/0525b332aafb83307b32d9747a93de03?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"0525b332aafb83307b32d9747a93de03\",\"url\":\"https://api.github.com/users/rafaelfranca\",\"html_url\":\"https://github.com/rafaelfranca\",\"followers_url\":\"https://api.github.com/users/rafaelfranca/followers\",\"following_url\":\"https://api.github.com/users/rafaelfranca/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/rafaelfranca/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/rafaelfranca/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/rafaelfranca/subscriptions\",\"organizations_url\":\"https://api.github.com/users/rafaelfranca/orgs\",\"repos_url\":\"https://api.github.com/users/rafaelfranca/repos\",\"events_url\":\"https://api.github.com/users/rafaelfranca/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/rafaelfranca/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":10,\"created_at\":\"2011-08-16T23:48:44Z\",\"updated_at\":\"2012-06-29T23:57:47Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"@tenderlove:\\r\\n\\r\\n586a944ddd4d03e66dea1093306147594748037a causes at least two different types of false-positive parse errors that did not exist in 3.0.9:\\r\\n\\r\\n```ruby\\r\\ndef test_xml_tag\\r\\n assert_nothing_raised { HTML::Document.new('<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>', true, true) }\\r\\nend\\r\\n\\r\\ndef test_js\\r\\n assert_nothing_raised { HTML::Document.new('<script>1<=2</script>', true, true) }\\r\\nend\\r\\n```\\r\\n\\r\\n```\\r\\nLoaded suite test/template/html-scanner/document_test\\r\\nStarted\\r\\n......F........F\\r\\nFinished in 0.016336 seconds.\\r\\n\\r\\n 1) Failure:\\r\\ntest_js(DocumentTest)\\r\\n [test/template/html-scanner/document_test.rb:153:in `test_js']:\\r\\nException raised:\\r\\nClass: <RuntimeError>\\r\\nMessage: <\\\"expected > (got \\\\\\\"\\\\\\\" for <=2, {})\\\">\\r\\n---Backtrace---\\r\\n/Users/titanous/src/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb:194:in `parse'\\r\\n/Users/titanous/src/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb:20:in `initialize'\\r\\ntest/template/html-scanner/document_test.rb:153:in `new'\\r\\ntest/template/html-scanner/document_test.rb:153:in `test_js'\\r\\ntest/template/html-scanner/document_test.rb:153:in `test_js'\\r\\n---------------\\r\\n\\r\\n 2) Failure:\\r\\ntest_xml_tag(DocumentTest)\\r\\n [test/template/html-scanner/document_test.rb:149:in `test_xml_tag']:\\r\\nException raised:\\r\\nClass: <RuntimeError>\\r\\nMessage: <\\\"expected > (got \\\\\\\"?>\\\\\\\" for <?xml version=\\\\\\\"1.0\\\\\\\" encoding=\\\\\\\"UTF-8\\\\\\\"?>, {\\\\\\\"encoding\\\\\\\"=>\\\\\\\"UTF-8\\\\\\\", \\\\\\\"version\\\\\\\"=>\\\\\\\"1.0\\\\\\\"})\\\">\\r\\n---Backtrace---\\r\\n/Users/titanous/src/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb:194:in `parse'\\r\\n/Users/titanous/src/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb:20:in `initialize'\\r\\ntest/template/html-scanner/document_test.rb:149:in `new'\\r\\ntest/template/html-scanner/document_test.rb:149:in `test_xml_tag'\\r\\ntest/template/html-scanner/document_test.rb:149:in `test_xml_tag'\\r\\n---------------\\r\\n\\r\\n16 tests, 30 assertions, 2 failures, 0 errors\\r\\n```\\r\\n\\r\\n \"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/2488\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/2488/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/2488/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/2488/events\",\"html_url\":\"https://github.com/rails/rails/issues/2488\",\"id\":1383250,\"number\":2488,\"title\":\"Add an assertion for testing redirect in routes.rb\",\"user\":{\"login\":\"mattwynne\",\"id\":19260,\"avatar_url\":\"https://secure.gravatar.com/avatar/cdf378de2284d8acf137122e541caa28?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"cdf378de2284d8acf137122e541caa28\",\"url\":\"https://api.github.com/users/mattwynne\",\"html_url\":\"https://github.com/mattwynne\",\"followers_url\":\"https://api.github.com/users/mattwynne/followers\",\"following_url\":\"https://api.github.com/users/mattwynne/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/mattwynne/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/mattwynne/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/mattwynne/subscriptions\",\"organizations_url\":\"https://api.github.com/users/mattwynne/orgs\",\"repos_url\":\"https://api.github.com/users/mattwynne/repos\",\"events_url\":\"https://api.github.com/users/mattwynne/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/mattwynne/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/actionpack\",\"name\":\"actionpack\",\"color\":\"FFF700\"}],\"state\":\"open\",\"assignee\":{\"login\":\"pixeltrix\",\"id\":6321,\"avatar_url\":\"https://secure.gravatar.com/avatar/b14001f2b40640dd6cb63f0e8f1f4869?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"b14001f2b40640dd6cb63f0e8f1f4869\",\"url\":\"https://api.github.com/users/pixeltrix\",\"html_url\":\"https://github.com/pixeltrix\",\"followers_url\":\"https://api.github.com/users/pixeltrix/followers\",\"following_url\":\"https://api.github.com/users/pixeltrix/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/pixeltrix/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/pixeltrix/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/pixeltrix/subscriptions\",\"organizations_url\":\"https://api.github.com/users/pixeltrix/orgs\",\"repos_url\":\"https://api.github.com/users/pixeltrix/repos\",\"events_url\":\"https://api.github.com/users/pixeltrix/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/pixeltrix/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":22,\"created_at\":\"2011-08-10T22:07:46Z\",\"updated_at\":\"2012-07-01T18:33:03Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"I'd like to use the redirect method in my routes configuration, but I'd also like to be able to cover it with unit tests for the routing.\\r\\n\\r\\nI can't see an assertion for the routing in [1] that will test a redirect in the routes. Did I miss something?\\r\\n\\r\\n[1] https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/testing/assertions/routing.rb\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/2189\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/2189/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/2189/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/2189/events\",\"html_url\":\"https://github.com/rails/rails/issues/2189\",\"id\":1270673,\"number\":2189,\"title\":\"HABTM: Assocations can be created in the wrong database\",\"user\":{\"login\":\"christophersansone\",\"id\":686233,\"avatar_url\":\"https://secure.gravatar.com/avatar/3e71c060ce81d7fcfc56d7b84327b6a6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"3e71c060ce81d7fcfc56d7b84327b6a6\",\"url\":\"https://api.github.com/users/christophersansone\",\"html_url\":\"https://github.com/christophersansone\",\"followers_url\":\"https://api.github.com/users/christophersansone/followers\",\"following_url\":\"https://api.github.com/users/christophersansone/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/christophersansone/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/christophersansone/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/christophersansone/subscriptions\",\"organizations_url\":\"https://api.github.com/users/christophersansone/orgs\",\"repos_url\":\"https://api.github.com/users/christophersansone/repos\",\"events_url\":\"https://api.github.com/users/christophersansone/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/christophersansone/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/bug\",\"name\":\"bug\",\"color\":\"444444\"},{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":6,\"created_at\":\"2011-07-22T15:42:06Z\",\"updated_at\":\"2012-11-27T16:53:19Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"In has_and_belongs_to_many_association.rb, the insert_record() and delete_records() functions use Arel::Table.new() to build the records to insert and delete. The problem with the current implementation is that, no matter what, it will create the association in the default database, regardless of which database the association owner (@owner) is in. This will lead to the association record being in a different database than the owner record, which seems incorrect and unintended.\\r\\n\\r\\nThe resolution is simple: when Arel::Table.new() is called in insert_record() and delete_records(), the owner's arel engine should be passed in as the second parameter:\\r\\n\\r\\n```ruby\\r\\nrelation = Arel::Table.new(@reflection.options[:join_table], @owner.class.arel_engine)\\r\\n```\\r\\n\\r\\nSince the owner's connection is used consistently throughout this unit, it seems to make sense that the owner's arel engine is used here as well.\\r\\n\\r\\nIn doing a quick search through the ActiveRecord code, it looks like the arel engine is specified almost every time Arel::Table.new() is called, so this seems like a straight-forward, correct, and consistent fix. There was one other method I noticed where this fix seems necessary as well: HasManyAssociation.delete_records().\\r\\n\\r\\nThank you very much!\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/2045\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/2045/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/2045/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/2045/events\",\"html_url\":\"https://github.com/rails/rails/issues/2045\",\"id\":1211180,\"number\":2045,\"title\":\"Add possibility to render partial from subfolder with inheritance\",\"user\":{\"login\":\"aratak\",\"id\":30642,\"avatar_url\":\"https://secure.gravatar.com/avatar/e697cf309b79a8fa16903931ce3a0b98?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"e697cf309b79a8fa16903931ce3a0b98\",\"url\":\"https://api.github.com/users/aratak\",\"html_url\":\"https://github.com/aratak\",\"followers_url\":\"https://api.github.com/users/aratak/followers\",\"following_url\":\"https://api.github.com/users/aratak/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/aratak/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/aratak/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/aratak/subscriptions\",\"organizations_url\":\"https://api.github.com/users/aratak/orgs\",\"repos_url\":\"https://api.github.com/users/aratak/repos\",\"events_url\":\"https://api.github.com/users/aratak/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/aratak/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/actionview\",\"name\":\"actionview\",\"color\":\"d7e102\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":31,\"created_at\":\"2011-07-12T20:20:44Z\",\"updated_at\":\"2013-03-14T17:01:36Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":\"https://github.com/rails/rails/pull/2045\",\"diff_url\":\"https://github.com/rails/rails/pull/2045.diff\",\"patch_url\":\"https://github.com/rails/rails/pull/2045.patch\"},\"body\":\"The new feature named \\\"template inheritance\\\" don't allow to render partial inside subfolders. Partials with slash in path name can be found only from views root folder. \\r\\n\\r\\nMy pull request extends behavior of template inheritance, and allow to render partial inside subfolders with inheritance feature. I suggest to use ```./``` at the start, and this partial will be found with relative path (from current directory). So, \\r\\n\\r\\n```\\r\\n render :partial => \\\"./head/menu\\\"\\r\\n```\\r\\n\\r\\ncan be found in several folders, as template inheritance means:\\r\\n\\r\\n```\\r\\n - views\\r\\n - application\\r\\n - head\\r\\n - menu.html.erb\\r\\n - controller_name\\r\\n - head\\r\\n - menu.html.erb\\r\\n```\\r\\n\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/1769\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/1769/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/1769/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/1769/events\",\"html_url\":\"https://github.com/rails/rails/issues/1769\",\"id\":1079942,\"number\":1769,\"title\":\"link_to / form_for doesn't work for singular resource\",\"user\":{\"login\":\"Godisemo\",\"id\":847898,\"avatar_url\":\"https://secure.gravatar.com/avatar/840125df8ab996b3f6f84327e4becb30?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"840125df8ab996b3f6f84327e4becb30\",\"url\":\"https://api.github.com/users/Godisemo\",\"html_url\":\"https://github.com/Godisemo\",\"followers_url\":\"https://api.github.com/users/Godisemo/followers\",\"following_url\":\"https://api.github.com/users/Godisemo/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/Godisemo/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/Godisemo/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/Godisemo/subscriptions\",\"organizations_url\":\"https://api.github.com/users/Godisemo/orgs\",\"repos_url\":\"https://api.github.com/users/Godisemo/repos\",\"events_url\":\"https://api.github.com/users/Godisemo/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/Godisemo/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/actionview\",\"name\":\"actionview\",\"color\":\"d7e102\"}],\"state\":\"open\",\"assignee\":{\"login\":\"pixeltrix\",\"id\":6321,\"avatar_url\":\"https://secure.gravatar.com/avatar/b14001f2b40640dd6cb63f0e8f1f4869?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"b14001f2b40640dd6cb63f0e8f1f4869\",\"url\":\"https://api.github.com/users/pixeltrix\",\"html_url\":\"https://github.com/pixeltrix\",\"followers_url\":\"https://api.github.com/users/pixeltrix/followers\",\"following_url\":\"https://api.github.com/users/pixeltrix/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/pixeltrix/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/pixeltrix/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/pixeltrix/subscriptions\",\"organizations_url\":\"https://api.github.com/users/pixeltrix/orgs\",\"repos_url\":\"https://api.github.com/users/pixeltrix/repos\",\"events_url\":\"https://api.github.com/users/pixeltrix/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/pixeltrix/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":28,\"created_at\":\"2011-06-19T09:32:54Z\",\"updated_at\":\"2013-05-09T21:23:31Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"In my routes I have\\r\\n\\r\\n```ruby\\r\\nresource :company\\r\\n```\\r\\n\\r\\nand in my views\\r\\n\\r\\n```erb\\r\\n<% form_for(@store) do |f| %>\\r\\n \xE2\x80\xA6\\r\\n<% end %>\\r\\n```\\r\\n\\r\\nWhen \\r\\n\\r\\nnew action gets an error when rendering\\r\\n\\r\\n```undefined method `hash_for_companies_path' for #<Module:0x00000102bfd3f0>```\\r\\n\\r\\nThe stack trace reviels that the problem occurs in\\r\\n\\r\\n```lib/action_dispatch/routing/polymorphic_routes.rb:133:in `polymorphic_url'```\\r\\n\\r\\nedit action can render without errors but the forms url is ```/company.4``` where 4 is the id of the company.\\r\\n\\r\\nThis seems to be a bug that has been around for a very long time so I think it's time to fix it.\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/1627\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/1627/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/1627/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/1627/events\",\"html_url\":\"https://github.com/rails/rails/issues/1627\",\"id\":1034963,\"number\":1627,\"title\":\"AR 3.1 / pgbouncer / PostgreSQL issue with prepared statements\",\"user\":{\"login\":\"underley\",\"id\":58145,\"avatar_url\":\"https://secure.gravatar.com/avatar/2dd511b5ed409c823accebe21776e78a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"2dd511b5ed409c823accebe21776e78a\",\"url\":\"https://api.github.com/users/underley\",\"html_url\":\"https://github.com/underley\",\"followers_url\":\"https://api.github.com/users/underley/followers\",\"following_url\":\"https://api.github.com/users/underley/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/underley/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/underley/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/underley/subscriptions\",\"organizations_url\":\"https://api.github.com/users/underley/orgs\",\"repos_url\":\"https://api.github.com/users/underley/repos\",\"events_url\":\"https://api.github.com/users/underley/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/underley/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":{\"login\":\"tenderlove\",\"id\":3124,\"avatar_url\":\"https://secure.gravatar.com/avatar/f29327647a9cff5c69618bae420792ea?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"f29327647a9cff5c69618bae420792ea\",\"url\":\"https://api.github.com/users/tenderlove\",\"html_url\":\"https://github.com/tenderlove\",\"followers_url\":\"https://api.github.com/users/tenderlove/followers\",\"following_url\":\"https://api.github.com/users/tenderlove/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/tenderlove/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/tenderlove/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/tenderlove/subscriptions\",\"organizations_url\":\"https://api.github.com/users/tenderlove/orgs\",\"repos_url\":\"https://api.github.com/users/tenderlove/repos\",\"events_url\":\"https://api.github.com/users/tenderlove/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/tenderlove/received_events\",\"type\":\"User\"},\"milestone\":null,\"comments\":33,\"created_at\":\"2011-06-10T08:23:41Z\",\"updated_at\":\"2013-05-18T12:37:18Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"Using exec_cache with pgbouncer in transaction mode, as the connections pool can cause random problems.\\r\\n\\r\\nScenario:\\r\\n- the application performs a query through ActiveRecord:\\r\\n\\r\\nSomething.find 2\\r\\nSomething Load (0.9ms) SELECT \\\"somethings\\\" .* FROM \\\"somethings\\\" WHERE \\\"somethings.\\\" Id \\\"= $ 1 LIMIT 1 [[\\\" id \\\", 2]]\\r\\n\\r\\n- pgbouncer connects to the backend (lets call it PG-1)\\r\\n- ActiveRecord creates a prepared statement\\r\\n- pgbouncer prepares for the backend PG-1 prepared statement called a3:\\r\\n\\r\\n2011-06-10 9:34:04 EDT LOG: duration: 0.505 ms parse a3: SELECT \\\"somethings\\\" .* FROM \\\"somethings\\\" WHERE \\\"somethings.\\\" Id \\\"= $ 1 LIMIT 1\\r\\n\\r\\n- ActiveRecord execute prepared statement\\r\\n- pgbouncer performs pg backend EXECUTE a3 (...) on PG-1\\r\\n\\r\\n> 2011-06-10 9:34:04 EDT LOG: duration: 0.048 ms bind a3: SELECT \\\"somethings\\\" .* FROM \\\"somethings\\\" WHERE \\\"somethings.\\\" Id \\\"= $ 1 LIMIT 1\\r\\n> 2011-06-10 9:34:04 GMT DETAIL: parameters: $ 1 = '2 '\\r\\n> 2011-06-10 9:34:04 EDT LOG: duration: 0.045 ms execute a3: SELECT \\\"somethings\\\" .* FROM \\\"somethings\\\" WHERE \\\"somethings.\\\" Id \\\"= $ 1 LIMIT 1\\r\\n> 2011-06-10 9:34:04 GMT DETAIL: parameters: $ 1 = '2 '\\r\\n\\r\\n- the application receives the result\\r\\n\\r\\n> Something Id: 2, symbol: \\\"sss2\\\", description: nil, created_at: \\\"2011-06-10 07:19:34\\\", updated_at: \\\"2011-06-10 07:19:34\\\"\\r\\n\\r\\n- at this time a different application process connects to pgbouncer, goes to the backend PG-1 and takes it (for example - with begin transaction)\\r\\n- the first application process once again executes the same query, with other parameters\\r\\n\\r\\nSomething.find 3\\r\\n\\r\\n- pgbouncer connects to the backend (but this time it goes to the PG-2, because the PG-1 is busy)\\r\\n- ActiveRecord has prepared statement in exec_cache (called a3)\\r\\n- ActiveRecord execute prepared statemnet a3\\r\\n\\r\\n> Something Load (1.2ms) SELECT \\\"somethings\\\" .* FROM \\\"somethings\\\" WHERE \\\"somethings.\\\" Id \\\"= $ 1 LIMIT 1 [[\\\" id \\\", 3]]\\r\\n\\r\\n- pgbouncer performs EXECUTE a3 (...) on backend PG-2\\r\\n- Fail - the PG-2 has no such prepared statement\\r\\n\\r\\n> PGError: ERROR: Prepared statement \\\"a3\\\" does not exist\\r\\n\\r\\nSolutions:\\r\\n- switching pgbouncer mode to session - bad, because it increases the consumption of resources\\r\\n- wrapping request in transaction - wrong - also increases consumption of resources, with additional side effec - there may be long-lasting transactions that will cause deadlocks\\r\\n- add option to not use ActiveRecord exec_cache - fix all issues with pgbouncer and additionaly another described [here](http://www.depesz.com/index.php/2008/05/10/prepared-statements-gotcha/)\\r\\n\"},{\"url\":\"https://api.github.com/repos/rails/rails/issues/939\",\"labels_url\":\"https://api.github.com/repos/rails/rails/issues/939/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/rails/rails/issues/939/comments\",\"events_url\":\"https://api.github.com/repos/rails/rails/issues/939/events\",\"html_url\":\"https://github.com/rails/rails/issues/939\",\"id\":904741,\"number\":939,\"title\":\"ActiveRecord UNION left out\",\"user\":{\"login\":\"lighthouse-import\",\"id\":789801,\"avatar_url\":\"https://secure.gravatar.com/avatar/0c32990bcc0183c5b4ab0dc869946af7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\"gravatar_id\":\"0c32990bcc0183c5b4ab0dc869946af7\",\"url\":\"https://api.github.com/users/lighthouse-import\",\"html_url\":\"https://github.com/lighthouse-import\",\"followers_url\":\"https://api.github.com/users/lighthouse-import/followers\",\"following_url\":\"https://api.github.com/users/lighthouse-import/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/lighthouse-import/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/lighthouse-import/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/lighthouse-import/subscriptions\",\"organizations_url\":\"https://api.github.com/users/lighthouse-import/orgs\",\"repos_url\":\"https://api.github.com/users/lighthouse-import/repos\",\"events_url\":\"https://api.github.com/users/lighthouse-import/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/lighthouse-import/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/rails/rails/labels/activerecord\",\"name\":\"activerecord\",\"color\":\"0b02e1\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":35,\"created_at\":\"2011-05-16T04:47:12Z\",\"updated_at\":\"2013-05-09T03:48:22Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"*Imported from Lighthouse.* Original ticket at: http://rails.lighthouseapp.com/projects/8994/tickets/6591\\nCreated by **clyfe** - 2011-03-17 19:22:47 UTC\\n\\nActiveRecord returns <Arel::Nodes::Union> when I call model.union(active_relation), but it should return an ActiveRelation\\n\\n\\n1. What steps will reproduce the problem:\\n\\n class User << AR::Base; end \\n User.where(:a => 1).union(User.where(:a => 2)) \\n\\n2. What is the wrong result:\\n\\n The result is an instance of Arel::Nodes::Union\\n\\n3. What is the result that should happen instead:\\n\\n The computation should return an instance of ActiveRelation\\n\\n### THE GOOD\\n\\nThe resulting Arel::Nodes::Union object can be transformed to_sql and then we can use User.find_by_sql(sql)\\n\\n a = User.where(:a => 1).union(User.where(:a => 2))\\n sql = a.to_sql # ( SELECT \\\"users\\\".* FROM \\\"users\\\" WHERE \\\"users\\\".\\\"a\\\" = 1 UNION SELECT \\\"users\\\".* FROM \\\"users\\\" WHERE \\\"users\\\".\\\"a\\\" = 2 )\\\"\\n User.find_by_sql(sql)\\n\\n### THE ISSUE\\n\\nThe issue is obtaining an ActiveRelation object that we can further chain.\\nCaling a method (select, where, includes) on this (ActiveRelation unioned) object would have the behavior of further calling that method on each of the ActiveRelation objects involved in the UNION\\n________________________________________\\n\\nAll tough in general a UNION query can be avoided, there are some cases where the corect active relation #union functionality is needed.\\n\\nFor example this wold allow fixing issue #213 of CanCan https://github.com/ryanb/cancan/issues/213\\n\\nI would be glad to work in this issue, with a little help.\"}]", :headers=>{"Server"=>"GitHub.com", "Date"=>"Mon, 20 May 2013 20:26:18 GMT", "Content-Type"=>"application/json; charset=utf-8", "Connection"=>"keep-alive", "Status"=>"200 OK", "X-RateLimit-Limit"=>"60", "X-RateLimit-Remaining"=>"57", "Vary"=>"Accept, Accept-Encoding", "Cache-Control"=>"public, max-age=60, s-maxage=60", "Last-Modified"=>"Mon, 20 May 2013 20:05:10 GMT", "ETag"=>"\"e92faaef3a70610dd52595f9aa2926ab\"", "X-GitHub-Media-Type"=>"github.beta; param=3.raw; format=json", "Link"=>"<https://api.github.com/repositories/8514/issues?page=1>; rel=\"last\", <https://api.github.com/repositories/8514/issues?page=1>; rel=\"first\", <https://api.github.com/repositories/8514/issues?page=17>; rel=\"prev\"", "X-Content-Type-Options"=>"nosniff", "Content-Length"=>"26444", "Access-Control-Allow-Credentials"=>"true", "Access-Control-Expose-Headers"=>"Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes", "Access-Control-Allow-Origin"=>"*", "X-RateLimit-Reset" => "1504196685"}, :status=>200, :remote_ip=>"207.97.227.243"}
24
25
  else
25
26
  raise "no page #{page}"
26
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_hub_bub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Schneeman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-14 00:00:00.000000000 Z
11
+ date: 2017-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rrrretry
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: timecop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: test-unit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: mocha
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -150,7 +178,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
178
  requirements:
151
179
  - - ">="
152
180
  - !ruby/object:Gem::Version
153
- version: '0'
181
+ version: '2.2'
154
182
  required_rubygems_version: !ruby/object:Gem::Requirement
155
183
  requirements:
156
184
  - - ">="
@@ -158,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
186
  version: '0'
159
187
  requirements: []
160
188
  rubyforge_project:
161
- rubygems_version: 2.2.2
189
+ rubygems_version: 2.6.13
162
190
  signing_key:
163
191
  specification_version: 4
164
192
  summary: git_hub_bub makes github requests