git_hub_bub 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.travis.yml +9 -0
- data/Gemfile +3 -0
- data/README.md +214 -0
- data/Rakefile +15 -0
- data/changelog.md +3 -0
- data/git_hub_bub.gemspec +28 -0
- data/lib/git_hub_bub/request.rb +137 -0
- data/lib/git_hub_bub/response.rb +66 -0
- data/lib/git_hub_bub/version.rb +3 -0
- data/lib/git_hub_bub.rb +38 -0
- data/test/fixtures/vcr_cassettes/DELETE_milestone.yml +113 -0
- data/test/fixtures/vcr_cassettes/GET_rails/rails/issues.yml +298 -0
- data/test/fixtures/vcr_cassettes/GET_rails/rails/issues_page_2.yml +2389 -0
- data/test/fixtures/vcr_cassettes/HEAD_rails/rails/issues.yml +61 -0
- data/test/fixtures/vcr_cassettes/PATCH_user.yml +67 -0
- data/test/fixtures/vcr_cassettes/POST_/_owner/_repo/issues.yml +63 -0
- data/test/fixtures/vcr_cassettes/PUT_/repos/_owner/_repo/subscription.yml +62 -0
- data/test/git_hub_bub/request_test.rb +89 -0
- data/test/git_hub_bub/response_test.rb +50 -0
- data/test/test_helper.rb +38 -0
- metadata +159 -0
data/lib/git_hub_bub.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
require 'json'
|
3
|
+
require 'uri'
|
4
|
+
require 'cgi'
|
5
|
+
|
6
|
+
require 'excon'
|
7
|
+
require 'rrrretry'
|
8
|
+
|
9
|
+
require 'git_hub_bub/request'
|
10
|
+
require 'git_hub_bub/response'
|
11
|
+
|
12
|
+
module GitHubBub
|
13
|
+
class << self
|
14
|
+
def head(*args)
|
15
|
+
Request.head(*args)
|
16
|
+
end
|
17
|
+
|
18
|
+
def get(*args)
|
19
|
+
Request.get(*args)
|
20
|
+
end
|
21
|
+
|
22
|
+
def post(*args)
|
23
|
+
Request.post(*args)
|
24
|
+
end
|
25
|
+
|
26
|
+
def put(*args)
|
27
|
+
Request.put(*args)
|
28
|
+
end
|
29
|
+
|
30
|
+
def patch(*args)
|
31
|
+
Request.patch(*args)
|
32
|
+
end
|
33
|
+
|
34
|
+
def delete(*args)
|
35
|
+
Request.delete(*args)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://api.github.com/repos/<OWNER>/<REPO>/labels?color=FFFFFF&name=test
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"name":"test","color":"FFFFFF"}'
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/vnd.github.3.raw+json
|
12
|
+
User-Agent:
|
13
|
+
- f7baade8a8014c3aa0fa31a172f51a37
|
14
|
+
Authorization:
|
15
|
+
- token <GITHUB_API_KEY>
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 201
|
19
|
+
message: ''
|
20
|
+
headers:
|
21
|
+
Server:
|
22
|
+
- GitHub.com
|
23
|
+
Date:
|
24
|
+
- Tue, 21 May 2013 20:03:27 GMT
|
25
|
+
Content-Type:
|
26
|
+
- application/json; charset=utf-8
|
27
|
+
Connection:
|
28
|
+
- keep-alive
|
29
|
+
Status:
|
30
|
+
- 201 Created
|
31
|
+
X-Ratelimit-Limit:
|
32
|
+
- '5000'
|
33
|
+
X-Ratelimit-Remaining:
|
34
|
+
- '4990'
|
35
|
+
X-Oauth-Scopes:
|
36
|
+
- user, public_repo, repo, gist
|
37
|
+
X-Accepted-Oauth-Scopes:
|
38
|
+
- repo, public_repo
|
39
|
+
Location:
|
40
|
+
- https://api.github.com/repos/<OWNER>/<REPO>/labels/test
|
41
|
+
X-Github-Media-Type:
|
42
|
+
- github.beta; param=3.raw; format=json
|
43
|
+
X-Content-Type-Options:
|
44
|
+
- nosniff
|
45
|
+
Content-Length:
|
46
|
+
- '97'
|
47
|
+
Access-Control-Allow-Credentials:
|
48
|
+
- 'true'
|
49
|
+
Access-Control-Expose-Headers:
|
50
|
+
- Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes
|
51
|
+
Access-Control-Allow-Origin:
|
52
|
+
- '*'
|
53
|
+
Etag:
|
54
|
+
- '"b770f09e29b13b0c3a3be4ef42fea299"'
|
55
|
+
Cache-Control:
|
56
|
+
- max-age=0, private, must-revalidate
|
57
|
+
body:
|
58
|
+
encoding: UTF-8
|
59
|
+
string: '{"url":"https://api.github.com/repos/<OWNER>/<REPO>/labels/test","name":"test","color":"FFFFFF"}'
|
60
|
+
http_version:
|
61
|
+
recorded_at: Tue, 21 May 2013 20:03:37 GMT
|
62
|
+
- request:
|
63
|
+
method: delete
|
64
|
+
uri: https://api.github.com/repos/<OWNER>/<REPO>/labels/test
|
65
|
+
body:
|
66
|
+
encoding: UTF-8
|
67
|
+
string: '{}'
|
68
|
+
headers:
|
69
|
+
Accept:
|
70
|
+
- application/vnd.github.3.raw+json
|
71
|
+
User-Agent:
|
72
|
+
- f7baade8a8014c3aa0fa31a172f51a37
|
73
|
+
Authorization:
|
74
|
+
- token <GITHUB_API_KEY>
|
75
|
+
response:
|
76
|
+
status:
|
77
|
+
code: 204
|
78
|
+
message: ''
|
79
|
+
headers:
|
80
|
+
Server:
|
81
|
+
- GitHub.com
|
82
|
+
Date:
|
83
|
+
- Tue, 21 May 2013 20:03:28 GMT
|
84
|
+
Connection:
|
85
|
+
- keep-alive
|
86
|
+
Status:
|
87
|
+
- 204 No Content
|
88
|
+
X-Ratelimit-Limit:
|
89
|
+
- '5000'
|
90
|
+
X-Ratelimit-Remaining:
|
91
|
+
- '4989'
|
92
|
+
X-Oauth-Scopes:
|
93
|
+
- user, public_repo, repo, gist
|
94
|
+
X-Accepted-Oauth-Scopes:
|
95
|
+
- repo, public_repo
|
96
|
+
X-Github-Media-Type:
|
97
|
+
- github.beta; param=3.raw; format=json
|
98
|
+
X-Content-Type-Options:
|
99
|
+
- nosniff
|
100
|
+
Access-Control-Allow-Credentials:
|
101
|
+
- 'true'
|
102
|
+
Access-Control-Expose-Headers:
|
103
|
+
- Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes
|
104
|
+
Access-Control-Allow-Origin:
|
105
|
+
- '*'
|
106
|
+
Vary:
|
107
|
+
- Accept-Encoding
|
108
|
+
body:
|
109
|
+
encoding: UTF-8
|
110
|
+
string: ''
|
111
|
+
http_version:
|
112
|
+
recorded_at: Tue, 21 May 2013 20:03:38 GMT
|
113
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,298 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.github.com/repos/rails/rails/issues
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/vnd.github.3.raw+json
|
12
|
+
User-Agent:
|
13
|
+
- f7baade8a8014c3aa0fa31a172f51a37
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: ''
|
18
|
+
headers:
|
19
|
+
Server:
|
20
|
+
- GitHub.com
|
21
|
+
Date:
|
22
|
+
- Tue, 21 May 2013 20:03:28 GMT
|
23
|
+
Content-Type:
|
24
|
+
- application/json; charset=utf-8
|
25
|
+
Connection:
|
26
|
+
- keep-alive
|
27
|
+
Status:
|
28
|
+
- 200 OK
|
29
|
+
X-Ratelimit-Limit:
|
30
|
+
- '60'
|
31
|
+
X-Ratelimit-Remaining:
|
32
|
+
- '58'
|
33
|
+
Vary:
|
34
|
+
- Accept, Accept-Encoding
|
35
|
+
Cache-Control:
|
36
|
+
- public, max-age=60, s-maxage=60
|
37
|
+
Last-Modified:
|
38
|
+
- Tue, 21 May 2013 20:00:16 GMT
|
39
|
+
Etag:
|
40
|
+
- '"2268fc642d2daf7ef400b588da20134b"'
|
41
|
+
X-Github-Media-Type:
|
42
|
+
- github.beta; param=3.raw; format=json
|
43
|
+
Link:
|
44
|
+
- <https://api.github.com/repositories/8514/issues?page=2>; rel="next", <https://api.github.com/repositories/8514/issues?page=18>;
|
45
|
+
rel="last"
|
46
|
+
X-Content-Type-Options:
|
47
|
+
- nosniff
|
48
|
+
Content-Length:
|
49
|
+
- '72039'
|
50
|
+
Access-Control-Allow-Credentials:
|
51
|
+
- 'true'
|
52
|
+
Access-Control-Expose-Headers:
|
53
|
+
- Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes
|
54
|
+
Access-Control-Allow-Origin:
|
55
|
+
- '*'
|
56
|
+
body:
|
57
|
+
encoding: UTF-8
|
58
|
+
string: '[{"url":"https://api.github.com/repos/rails/rails/issues/10715","labels_url":"https://api.github.com/repos/rails/rails/issues/10715/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10715/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10715/events","html_url":"https://github.com/rails/rails/issues/10715","id":14586452,"number":10715,"title":"name
|
59
|
+
change active_record => base_klass","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-21T19:34:08Z","updated_at":"2013-05-21T19:34:08Z","closed_at":null,"pull_request":{"html_url":"https://github.com/rails/rails/pull/10715","diff_url":"https://github.com/rails/rails/pull/10715.diff","patch_url":"https://github.com/rails/rails/pull/10715.patch"},"body":"In
|
60
|
+
Reflection instance active_record holds the information about\r\nthe base
|
61
|
+
class.\r\n\r\nThe name `active_record` throws me off a little bit because
|
62
|
+
the\r\nname suggests that it holds an instance of the model class. While\r\nit
|
63
|
+
holds a model class itself.\r\n\r\nThis PR changes the name active_record
|
64
|
+
=> base_klass.\r\n\r\nAll the tests are passing.\r\n\r\n/cc @tenderlove "},{"url":"https://api.github.com/repos/rails/rails/issues/10714","labels_url":"https://api.github.com/repos/rails/rails/issues/10714/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10714/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10714/events","html_url":"https://github.com/rails/rails/issues/10714","id":14580793,"number":10714,"title":"Extract
|
65
|
+
tests code out from AR''s base_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":0,"created_at":"2013-05-21T17:42:02Z","updated_at":"2013-05-21T17:42:02Z","closed_at":null,"pull_request":{"html_url":"https://github.com/rails/rails/pull/10714","diff_url":"https://github.com/rails/rails/pull/10714.diff","patch_url":"https://github.com/rails/rails/pull/10714.patch"},"body":"Check
|
66
|
+
commit message/description for further info :) "},{"url":"https://api.github.com/repos/rails/rails/issues/10713","labels_url":"https://api.github.com/repos/rails/rails/issues/10713/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10713/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10713/events","html_url":"https://github.com/rails/rails/issues/10713","id":14576812,"number":10713,"title":"Fix
|
67
|
+
the `:primary_key` option for `has_many` associations.","user":{"login":"senny","id":5402,"avatar_url":"https://secure.gravatar.com/avatar/3d698e2872c07061a455d9e250861235?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","gravatar_id":"3d698e2872c07061a455d9e250861235","url":"https://api.github.com/users/senny","html_url":"https://github.com/senny","followers_url":"https://api.github.com/users/senny/followers","following_url":"https://api.github.com/users/senny/following{/other_user}","gists_url":"https://api.github.com/users/senny/gists{/gist_id}","starred_url":"https://api.github.com/users/senny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/senny/subscriptions","organizations_url":"https://api.github.com/users/senny/orgs","repos_url":"https://api.github.com/users/senny/repos","events_url":"https://api.github.com/users/senny/events{/privacy}","received_events_url":"https://api.github.com/users/senny/received_events","type":"User"},"labels":[],"state":"open","assignee":null,"milestone":null,"comments":1,"created_at":"2013-05-21T16:20:37Z","updated_at":"2013-05-21T17:48:00Z","closed_at":null,"pull_request":{"html_url":"https://github.com/rails/rails/pull/10713","diff_url":"https://github.com/rails/rails/pull/10713.diff","patch_url":"https://github.com/rails/rails/pull/10713.patch"},"body":"Fixes
|
68
|
+
#10693\r\n\r\nWhen removing records from a `has_many` association it used\r\nthe
|
69
|
+
`primary_key` defined on the association.\r\n\r\nOur test suite didn''t fail
|
70
|
+
because on all occurences of `:primary_key`,\r\nthe specified column was available
|
71
|
+
in both tables. This prevented the\r\ncode from raising an exception but it
|
72
|
+
still behaved badly.\r\n\r\nI added a test-case to prevent regressions that
|
73
|
+
failed with:\r\n\r\n```\r\n 1) Error:\r\nHasManyAssociationsTest#test_has_many_assignment_with_custom_primary_key:\r\nActiveRecord::StatementInvalid:
|
74
|
+
SQLite3::SQLException: no such column: essays.first_name: UPDATE \"essays\"
|
75
|
+
SET \"writer_id\" = NULL WHERE \"essays\".\"writer_id\" = ? AND \"essays\".\"first_name\"
|
76
|
+
IS NULL\r\n```"},{"url":"https://api.github.com/repos/rails/rails/issues/10712","labels_url":"https://api.github.com/repos/rails/rails/issues/10712/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10712/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10712/events","html_url":"https://github.com/rails/rails/issues/10712","id":14574244,"number":10712,"title":"Use
|
77
|
+
.railsrc while creating new plugin if available. Fixes #10700","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":2,"created_at":"2013-05-21T15:36:32Z","updated_at":"2013-05-21T18:44:13Z","closed_at":null,"pull_request":{"html_url":"https://github.com/rails/rails/pull/10712","diff_url":"https://github.com/rails/rails/pull/10712.diff","patch_url":"https://github.com/rails/rails/pull/10712.patch"},"body":"-
|
78
|
+
Fixes #10700"},{"url":"https://api.github.com/repos/rails/rails/issues/10710","labels_url":"https://api.github.com/repos/rails/rails/issues/10710/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10710/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10710/events","html_url":"https://github.com/rails/rails/issues/10710","id":14565246,"number":10710,"title":"Remove
|
79
|
+
column restrictions for `#count`, let the database raise if the SQL is invalid.","user":{"login":"senny","id":5402,"avatar_url":"https://secure.gravatar.com/avatar/3d698e2872c07061a455d9e250861235?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","gravatar_id":"3d698e2872c07061a455d9e250861235","url":"https://api.github.com/users/senny","html_url":"https://github.com/senny","followers_url":"https://api.github.com/users/senny/followers","following_url":"https://api.github.com/users/senny/following{/other_user}","gists_url":"https://api.github.com/users/senny/gists{/gist_id}","starred_url":"https://api.github.com/users/senny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/senny/subscriptions","organizations_url":"https://api.github.com/users/senny/orgs","repos_url":"https://api.github.com/users/senny/repos","events_url":"https://api.github.com/users/senny/events{/privacy}","received_events_url":"https://api.github.com/users/senny/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":1,"created_at":"2013-05-21T12:40:33Z","updated_at":"2013-05-21T12:41:49Z","closed_at":null,"pull_request":{"html_url":"https://github.com/rails/rails/pull/10710","diff_url":"https://github.com/rails/rails/pull/10710.diff","patch_url":"https://github.com/rails/rails/pull/10710.patch"},"body":"Fixes
|
80
|
+
#5554\r\n\r\nPreviously the code path for `#count` used some [validation logic](https://github.com/rails/rails/blob/54122067acaad39b277a5363c6d11d6804c7bf6b/activerecord/lib/active_record/relation/calculations.rb#L389-L394)
|
81
|
+
and used to fall back on `#count(:all)`. This prevented the execution of some
|
82
|
+
specific count queries.\r\n\r\nThis patch gets rid of the validation logic
|
83
|
+
and let''s the database decide if the query is valid or not. One backwards
|
84
|
+
incompatible result of this patch is the following:\r\n\r\n```ruby\r\nrelation
|
85
|
+
= User.select(\"id, name\")\r\n\r\n# later in the code\r\nrelation.count\r\n```\r\n\r\nThis
|
86
|
+
count will now blow up because it you can''t count on two columns. The solution
|
87
|
+
is to specify the counting column explicitly:\r\n\r\n```ruby\r\nrelation.count(:all)\r\n```"},{"url":"https://api.github.com/repos/rails/rails/issues/10709","labels_url":"https://api.github.com/repos/rails/rails/issues/10709/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10709/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10709/events","html_url":"https://github.com/rails/rails/issues/10709","id":14560507,"number":10709,"title":"Wrong
|
88
|
+
use of :primary_key reflection option","user":{"login":"KrzysztofMadejski","id":849975,"avatar_url":"https://secure.gravatar.com/avatar/821cc737d014ae30cfc558b2a5bfb02f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","gravatar_id":"821cc737d014ae30cfc558b2a5bfb02f","url":"https://api.github.com/users/KrzysztofMadejski","html_url":"https://github.com/KrzysztofMadejski","followers_url":"https://api.github.com/users/KrzysztofMadejski/followers","following_url":"https://api.github.com/users/KrzysztofMadejski/following{/other_user}","gists_url":"https://api.github.com/users/KrzysztofMadejski/gists{/gist_id}","starred_url":"https://api.github.com/users/KrzysztofMadejski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KrzysztofMadejski/subscriptions","organizations_url":"https://api.github.com/users/KrzysztofMadejski/orgs","repos_url":"https://api.github.com/users/KrzysztofMadejski/repos","events_url":"https://api.github.com/users/KrzysztofMadejski/events{/privacy}","received_events_url":"https://api.github.com/users/KrzysztofMadejski/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":1,"created_at":"2013-05-21T10:18:51Z","updated_at":"2013-05-21T10:52:54Z","closed_at":null,"pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"In
|
89
|
+
activerecord-3.2.13/lib/active_record/reflection.rb:215 (AssociationReflection#association_primary_key)\r\noptions[:primary_key]
|
90
|
+
is used as if it was an array, but documentation states it should be a method.\r\n\r\nshould
|
91
|
+
look similar to:\r\n\r\n def association_primary_key(klass = nil)\r\n if
|
92
|
+
options[:primary_key]\r\n self.send options[:primary_key]\r\n else\r\n primary_key(klass
|
93
|
+
|| self.klass)\r\n end\r\n end\r\n\r\n"},{"url":"https://api.github.com/repos/rails/rails/issues/10708","labels_url":"https://api.github.com/repos/rails/rails/issues/10708/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10708/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10708/events","html_url":"https://github.com/rails/rails/issues/10708","id":14559479,"number":10708,"title":"Rake.application
|
94
|
+
may be undefined when Rake is defined.","user":{"login":"os97673","id":450628,"avatar_url":"https://secure.gravatar.com/avatar/3ceac591523dcd469d5ad996a954c68d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","gravatar_id":"3ceac591523dcd469d5ad996a954c68d","url":"https://api.github.com/users/os97673","html_url":"https://github.com/os97673","followers_url":"https://api.github.com/users/os97673/followers","following_url":"https://api.github.com/users/os97673/following{/other_user}","gists_url":"https://api.github.com/users/os97673/gists{/gist_id}","starred_url":"https://api.github.com/users/os97673/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/os97673/subscriptions","organizations_url":"https://api.github.com/users/os97673/orgs","repos_url":"https://api.github.com/users/os97673/repos","events_url":"https://api.github.com/users/os97673/events{/privacy}","received_events_url":"https://api.github.com/users/os97673/received_events","type":"User"},"labels":[],"state":"open","assignee":null,"milestone":null,"comments":1,"created_at":"2013-05-21T09:49:16Z","updated_at":"2013-05-21T10:01:02Z","closed_at":null,"pull_request":{"html_url":"https://github.com/rails/rails/pull/10708","diff_url":"https://github.com/rails/rails/pull/10708.diff","patch_url":"https://github.com/rails/rails/pull/10708.patch"},"body":"The
|
95
|
+
code expects that as soon as Rake module is defined, Rake.application is defined
|
96
|
+
too. But this may not be true.\r\nE.g. RubyMine''s loggers are defined under
|
97
|
+
Rake::TeamCity module and so Rake module is defined, but Rake.application
|
98
|
+
isn''t"},{"url":"https://api.github.com/repos/rails/rails/issues/10707","labels_url":"https://api.github.com/repos/rails/rails/issues/10707/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10707/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10707/events","html_url":"https://github.com/rails/rails/issues/10707","id":14558805,"number":10707,"title":"call
|
99
|
+
_normalize_callback_options if options is not empty","user":{"login":"acapilleri","id":46208,"avatar_url":"https://secure.gravatar.com/avatar/0cd98f4e263d306bc455ca750c31443f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","gravatar_id":"0cd98f4e263d306bc455ca750c31443f","url":"https://api.github.com/users/acapilleri","html_url":"https://github.com/acapilleri","followers_url":"https://api.github.com/users/acapilleri/followers","following_url":"https://api.github.com/users/acapilleri/following{/other_user}","gists_url":"https://api.github.com/users/acapilleri/gists{/gist_id}","starred_url":"https://api.github.com/users/acapilleri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acapilleri/subscriptions","organizations_url":"https://api.github.com/users/acapilleri/orgs","repos_url":"https://api.github.com/users/acapilleri/repos","events_url":"https://api.github.com/users/acapilleri/events{/privacy}","received_events_url":"https://api.github.com/users/acapilleri/received_events","type":"User"},"labels":[],"state":"open","assignee":null,"milestone":null,"comments":3,"created_at":"2013-05-21T09:31:29Z","updated_at":"2013-05-21T15:38:28Z","closed_at":null,"pull_request":{"html_url":"https://github.com/rails/rails/pull/10707","diff_url":"https://github.com/rails/rails/pull/10707.diff","patch_url":"https://github.com/rails/rails/pull/10707.patch"},"body":"avoid
|
100
|
+
unnecessary calls of at least three functions"},{"url":"https://api.github.com/repos/rails/rails/issues/10704","labels_url":"https://api.github.com/repos/rails/rails/issues/10704/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10704/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10704/events","html_url":"https://github.com/rails/rails/issues/10704","id":14557280,"number":10704,"title":"Model
|
101
|
+
generator coupled to 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":[],"state":"open","assignee":null,"milestone":null,"comments":3,"created_at":"2013-05-21T08:47:42Z","updated_at":"2013-05-21T13:37:32Z","closed_at":null,"pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"when
|
102
|
+
running model generator it creates a table for the model unless the option
|
103
|
+
to skip it is passed.\r\n\r\nwhen looking at the code of model generator it
|
104
|
+
looks like model generator is coupled to migration generator code by using
|
105
|
+
migration_template method.\r\n\r\nthe code is this:\r\n\r\n def create_migration_file\r\n return
|
106
|
+
unless options[:migration] && options[:parent].nil?\r\n attributes.each
|
107
|
+
{ |a| a.attr_options.delete(:index) if a.reference? && !a.has_index? } if
|
108
|
+
options[:indexes] == false\r\n migration_template \"../../migration/templates/create_table_migration.rb\",
|
109
|
+
\"db/migrate/create_#{table_name}.rb\"\r\n end\r\n\r\n I think that the
|
110
|
+
migration generator should be the only one creating migration files. I think
|
111
|
+
that model generator should invoke migration generator instead of just creating
|
112
|
+
the migration file by using a method (#migration_template) that belongs to
|
113
|
+
the module Rails::Generators:Migration (included in ActiveRecord::Generators::Base
|
114
|
+
class)\r\n\r\nsomething like this would make more sense:\r\n\r\nhook_for :migration
|
115
|
+
do |instance, generator|\r\n # options control\r\n invoke generator, [\"create_#{instance.name.underscore.pluralize\"]\r\nend\r\n\r\nhowever
|
116
|
+
it is not working because the ARGV is empty (somehow in between args are
|
117
|
+
being cleared) and the options are not being piped somehow. \r\n\r\ninvoke
|
118
|
+
method prototype is: invoke(namespace, args=ARGV, config={})\r\n\r\nDoes this
|
119
|
+
make sense or there is a reason that things are like this because of Thor?
|
120
|
+
\r\n(I have few understanding of thor)"},{"url":"https://api.github.com/repos/rails/rails/issues/10703","labels_url":"https://api.github.com/repos/rails/rails/issues/10703/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10703/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10703/events","html_url":"https://github.com/rails/rails/issues/10703","id":14556927,"number":10703,"title":"Ruby
|
121
|
+
1.9 hashes in save(validate: true)","user":{"login":"divineforest","id":22360,"avatar_url":"https://secure.gravatar.com/avatar/2fae2cf102cfaeab3d1b37bf11537617?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","gravatar_id":"2fae2cf102cfaeab3d1b37bf11537617","url":"https://api.github.com/users/divineforest","html_url":"https://github.com/divineforest","followers_url":"https://api.github.com/users/divineforest/followers","following_url":"https://api.github.com/users/divineforest/following{/other_user}","gists_url":"https://api.github.com/users/divineforest/gists{/gist_id}","starred_url":"https://api.github.com/users/divineforest/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/divineforest/subscriptions","organizations_url":"https://api.github.com/users/divineforest/orgs","repos_url":"https://api.github.com/users/divineforest/repos","events_url":"https://api.github.com/users/divineforest/events{/privacy}","received_events_url":"https://api.github.com/users/divineforest/received_events","type":"User"},"labels":[],"state":"open","assignee":null,"milestone":null,"comments":1,"created_at":"2013-05-21T08:37:09Z","updated_at":"2013-05-21T16:01:30Z","closed_at":null,"pull_request":{"html_url":"https://github.com/rails/rails/pull/10703","diff_url":"https://github.com/rails/rails/pull/10703.diff","patch_url":"https://github.com/rails/rails/pull/10703.patch"},"body":""},{"url":"https://api.github.com/repos/rails/rails/issues/10701","labels_url":"https://api.github.com/repos/rails/rails/issues/10701/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10701/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10701/events","html_url":"https://github.com/rails/rails/issues/10701","id":14551322,"number":10701,"title":"Routing
|
122
|
+
regression between beta1 and rc1?","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":[{"url":"https://api.github.com/repos/rails/rails/labels/regression","name":"regression","color":"e10c02"},{"url":"https://api.github.com/repos/rails/rails/labels/needs+feedback","name":"needs
|
123
|
+
feedback","color":"ededed"},{"url":"https://api.github.com/repos/rails/rails/labels/routing","name":"routing","color":"e102d8"}],"state":"open","assignee":null,"milestone":null,"comments":1,"created_at":"2013-05-21T04:51:20Z","updated_at":"2013-05-21T10:54:08Z","closed_at":null,"pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"I
|
124
|
+
know there was some recent changes to routes, but this (very common) code
|
125
|
+
_did_ work on beta1, but fails on rc1:\r\n\r\n```\r\nget \"/signin\", to:
|
126
|
+
\"sessions#new\", as: \"signin\"\r\npost \"/signin\", to: \"sessions#create\",
|
127
|
+
as: \"signin\"\r\n```\r\n\r\nwith\r\n\r\n```rake\r\n$ bin/rake routes\r\nrake
|
128
|
+
aborted!\r\nInvalid route name, already in use: ''signin''\r\nYou may have
|
129
|
+
defined two routes with the same name using the `:as` option, or you may be
|
130
|
+
overriding a route already defined by a resource with the same naming. For
|
131
|
+
the latter, you can restrict the routes created with `resources` as explained
|
132
|
+
here:\r\nhttp://guides.rubyonrails.org/routing.html#restricting-the-routes-created\r\n```"},{"url":"https://api.github.com/repos/rails/rails/issues/10700","labels_url":"https://api.github.com/repos/rails/rails/issues/10700/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10700/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10700/events","html_url":"https://github.com/rails/rails/issues/10700","id":14549846,"number":10700,"title":"`rails
|
133
|
+
plugin new` does not respect railsrc files","user":{"login":"jimmycuadra","id":122457,"avatar_url":"https://secure.gravatar.com/avatar/8893e2e206c0377ff776d2535887d23f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","gravatar_id":"8893e2e206c0377ff776d2535887d23f","url":"https://api.github.com/users/jimmycuadra","html_url":"https://github.com/jimmycuadra","followers_url":"https://api.github.com/users/jimmycuadra/followers","following_url":"https://api.github.com/users/jimmycuadra/following{/other_user}","gists_url":"https://api.github.com/users/jimmycuadra/gists{/gist_id}","starred_url":"https://api.github.com/users/jimmycuadra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jimmycuadra/subscriptions","organizations_url":"https://api.github.com/users/jimmycuadra/orgs","repos_url":"https://api.github.com/users/jimmycuadra/repos","events_url":"https://api.github.com/users/jimmycuadra/events{/privacy}","received_events_url":"https://api.github.com/users/jimmycuadra/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":2,"created_at":"2013-05-21T03:59:19Z","updated_at":"2013-05-21T15:36:32Z","closed_at":null,"pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"Using
|
134
|
+
Rails 4.0.0.rc1, and given the following railsrc file:\r\n\r\n```\r\n$ cat
|
135
|
+
~/.railsrc\r\n--skip-bundle\r\n--skip-test-unit\r\n```\r\n\r\nRunning:\r\n\r\n```\r\n$
|
136
|
+
rails plugin new foo\r\n create \r\n create README.rdoc\r\n create Rakefile\r\n create foo.gemspec\r\n create MIT-LICENSE\r\n create .gitignore\r\n create Gemfile\r\n create lib/foo.rb\r\n create lib/tasks/foo_tasks.rake\r\n create lib/foo/version.rb\r\n create test/test_helper.rb\r\n create test/foo_test.rb\r\n append Rakefile\r\n vendor_app test/dummy\r\n run bundle
|
137
|
+
install\r\n```\r\n\r\nExpected: Test::Unit files should be skipped and `bundle
|
138
|
+
install` should not be run.\r\n\r\nActual: Test::unit files were created and
|
139
|
+
`bundle install` was run.\r\n\r\nI also tried with the following two invocations:\r\n\r\n```\r\n$
|
140
|
+
rails plugin new foo --rc=~/.railsrc\r\n$ rails plugin new foo --rc ~/.railsrc\r\n```\r\n\r\nThe
|
141
|
+
results were the same. The railsrc file is readable, and takes effect when
|
142
|
+
running the normal `rails new` command."},{"url":"https://api.github.com/repos/rails/rails/issues/10698","labels_url":"https://api.github.com/repos/rails/rails/issues/10698/labels{/name}","comments_url":"https://api.github.com/repos/rails/rails/issues/10698/comments","events_url":"https://api.github.com/repos/rails/rails/issues/10698/events","html_url":"https://github.com/rails/rails/issues/10698","id":14544688,"number":10698,"title":"Backport
|
143
|
+
minitest 5 to 4-0-stable","user":{"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"},"labels":[],"state":"open","assignee":null,"milestone":null,"comments":0,"created_at":"2013-05-20T23:40:35Z","updated_at":"2013-05-21T17:22:04Z","closed_at":null,"pull_request":{"html_url":"https://github.com/rails/rails/pull/10698","diff_url":"https://github.com/rails/rails/pull/10698.diff","patch_url":"https://github.com/rails/rails/pull/10698.patch"},"body":"This
|
144
|
+
pull request backports minitest 5 to 4-0-stable."},{"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
|
145
|
+
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":11,"created_at":"2013-05-20T19:14:39Z","updated_at":"2013-05-21T16:01:05Z","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
|
146
|
+
the confirmation was blank, but the password wasn''t, it would still save.\r\n\r\nSent
|
147
|
+
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
|
148
|
+
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":[{"url":"https://api.github.com/repos/rails/rails/labels/activerecord","name":"activerecord","color":"0b02e1"}],"state":"open","assignee":null,"milestone":null,"comments":5,"created_at":"2013-05-20T10:28:44Z","updated_at":"2013-05-21T16:43:58Z","closed_at":null,"pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"Somehow
|
149
|
+
it using correct key only once...\r\n\r\n```\r\nSQLite3::SQLException: no
|
150
|
+
such column: cities.code:\r\nUPDATE \"cities\" SET \"state_code\" = NULL WHERE\r\n\"cities\".\"state_code\"
|
151
|
+
= ''W'' AND\r\n\"cities\".\"code\" IS NULL\r\n```\r\n\r\nNot sure why it is
|
152
|
+
attaching `\"cities\".\"code\" IS NULL`\r\n\r\nIt happens only when state
|
153
|
+
already has some cities attached and\r\ni''m trying to set new cities using
|
154
|
+
`#cities=`\r\n\r\nHere is how to repeat:\r\n\r\n```ruby\r\nrequire ''logger''\r\nrequire
|
155
|
+
''active_record''\r\n\r\nActiveRecord::Base.logger = Logger.new(STDERR)\r\nActiveRecord::Base.establish_connection(\r\n adapter: \"sqlite3\",\r\n database:
|
156
|
+
\":memory:\"\r\n)\r\n\r\nActiveRecord::Schema.define do\r\n create_table
|
157
|
+
:states do |table|\r\n table.column :name, :string\r\n table.column
|
158
|
+
:code, :string\r\n end\r\n add_index :states, :code\r\n\r\n create_table
|
159
|
+
:cities do |table|\r\n table.column :name, :string\r\n table.column
|
160
|
+
:state_code, :string\r\n end\r\n add_index :cities, :state_code\r\nend\r\n\r\nclass
|
161
|
+
State < ActiveRecord::Base\r\n has_many :cities, foreign_key: :state_code,
|
162
|
+
primary_key: :code\r\nend\r\n\r\nclass City < ActiveRecord::Base\r\n belongs_to
|
163
|
+
:state, foreign_key: :state_code, primary_key: :code\r\nend\r\n\r\nstates
|
164
|
+
= (1..10).to_a.inject([]) do |s,n|\r\n s << State.create(name: n.to_s, code:
|
165
|
+
(''A''..''Z'').to_a.sample)\r\nend\r\n\r\ncities = (1..10).to_a.inject([])
|
166
|
+
do |c,n|\r\n c << City.create(name: n.to_s, state: states.sample)\r\nend\r\n\r\nstate,
|
167
|
+
state_cities = states.sample, cities.sample(5)\r\nstate_cities_n = state.cities.size\r\np
|
168
|
+
state, state_cities\r\nbegin\r\n state.cities = state_cities\r\nrescue =>
|
169
|
+
e\r\n puts '''', ''==='', e.message, ''==='', ''''\r\nend\r\nstate.save!\r\nstate.reload\r\np
|
170
|
+
[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
|
171
|
+
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
|
172
|
+
attributes_protected_by_default reference, since MassAssignmentSecurity was
|
173
|
+
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!
|
174
|
+
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
|
175
|
+
the tests and docs weren''y very clear in how this was supposed to work. But
|
176
|
+
wouldn''t it make sense that it should work with the following change. If
|
177
|
+
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
|
178
|
+
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
|
179
|
+
presents an avenue for configuration of Erubis enhancers as well. It\r\nis
|
180
|
+
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
|
181
|
+
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
|
182
|
+
changes to fix https://bugs.ruby-lang.org/issues/8173. `Time.at` now requires
|
183
|
+
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
|
184
|
+
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
|
185
|
+
noticed an issue while using the MailView gem, which someone discovered a
|
186
|
+
few months ago: https://github.com/37signals/mail_view/issues/37\r\n\r\nI
|
187
|
+
traced the issue down to this commit: https://github.com/rails/rails/commit/2ed325a3e90fc17c2d52a26bd1799b5f4e4bdf88\r\n\r\nThe
|
188
|
+
issue manifests as an exception \"A copy of <name> has been removed from the
|
189
|
+
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
|
190
|
+
MailView gem asks you to put a mailer in `app/mailers` like so:\r\n\r\n```ruby\r\nclass
|
191
|
+
MessagePreview < MailView\r\n def example\r\n ExampleMailer.example\r\n end\r\nend\r\n```\r\n\r\nIf
|
192
|
+
you change any model or controller in your application, you are forced to
|
193
|
+
`touch tmp/restart.txt` to avoid raising the exception. I''m able to work
|
194
|
+
around the issue by using the double-colon thingamajig to ensure we''re at
|
195
|
+
the top namespace:\r\n\r\n```ruby\r\nclass MessagePreview < MailView\r\n def
|
196
|
+
example\r\n ::ExampleMailer.example\r\n end\r\nend\r\n```\r\n\r\n...but
|
197
|
+
notice it''s done on the mailer. I did some debugging and noticed something
|
198
|
+
strange in `load_missing_constant` like so:\r\n\r\n```ruby\r\nload_missing_constant(from_mod,
|
199
|
+
const_name)\r\nfrom_mod = MessagePreview\r\nconst_name = ExampleMailer\r\n```\r\n\r\nSo,
|
200
|
+
I believe `Dependencies` is (incorrectly?) assuming that `ExampleMailer` is
|
201
|
+
defined in `MessagePreview` when it is just a regular mailer defined like
|
202
|
+
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,
|
203
|
+
I believe was changed by this commit: https://github.com/rails/rails/commit/2ed325a3e90fc17c2d52a26bd1799b5f4e4bdf88\r\n\r\nI''m
|
204
|
+
not sure if this is a bug with Rails or with MailView, to be honest. I haven''t
|
205
|
+
looked at the ActiveSupport::Dependencies code until now. Something seems
|
206
|
+
fishy, though, so I thought I should open an issue here to get some more :eyes:
|
207
|
+
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
|
208
|
+
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
|
209
|
+
instroduces the instance level `#destroy!` method, which raises ActiveRecord::RecordNotDestroyed
|
210
|
+
on failure. \r\n\r\nThis PR adds a class level `destroy!` method, which delegates
|
211
|
+
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
|
212
|
+
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
|
213
|
+
is a backport of #10417\r\n\r\nThe issue:\r\nPer the comments in pull #3329,
|
214
|
+
\r\nIf you have a table with a unique field index, and you mark a record for
|
215
|
+
destruction, and you build a new record with the same value as the unique
|
216
|
+
field, then when you call save, a database level unique index error will be
|
217
|
+
thrown.\r\n\r\nThis happens because the record destruction happens after record
|
218
|
+
creation.\r\n\r\nIn this pull request, I moved the record destruction ahead
|
219
|
+
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
|
220
|
+
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
|
221
|
+
have a few concerns about the way the rails generator creates a controller,
|
222
|
+
model, helper and a scaffold within a nested module. \r\n\r\n1. If you generate
|
223
|
+
a controller `rails g controller bar/post index` and the `bar` module is
|
224
|
+
not previously defined, rails will output an ''uninitialized constant'' error.\r\n2.
|
225
|
+
The generator does not follow the ruby idiom for nesting modules.\r\n3. Using
|
226
|
+
the generator with a module requires a lot of refactoring to clean up the
|
227
|
+
code.\r\n\r\n\r\nAccording to `rails g controller --help`:\r\n\r\n*To create
|
228
|
+
a controller within a module, specify the controller name as a\r\n path
|
229
|
+
like ''parent_module/controller_name''.*\r\n\r\n\r\n**STEPS TO REPRODUCE:**\r\n`$
|
230
|
+
rails plugin new foo --mountable`\r\n`$ rails g controller bar/post index
|
231
|
+
`\r\n\r\n```ruby\r\n# foo/app/controllers/foo/bar/post_controller.rb\r\nrequire_dependency
|
232
|
+
\"foo/application_controller\"\r\n\r\nmodule Foo\r\n class Bar::PostController
|
233
|
+
< ApplicationController\r\n def index\r\n end\r\n end\r\nend\r\n```\r\n\r\nThe
|
234
|
+
proper syntax for generating a controller within a module should be:\r\n\r\n```ruby\r\n#
|
235
|
+
foo/app/controllers/foo/bar/post_controller.rb\r\nrequire_dependency \"foo/application_controller\"\r\n\r\nmodule
|
236
|
+
Foo\r\n module Bar\r\n class PostController < ApplicationController\r\n def
|
237
|
+
index\r\n end\r\n end\r\n end\r\nend\r\n```\r\n\r\nI have verified
|
238
|
+
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
|
239
|
+
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":13,"created_at":"2013-05-18T12:36:48Z","updated_at":"2013-05-21T19:25:20Z","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
|
240
|
+
happens that later in the development process one realizes that a few columns
|
241
|
+
of a particular table should have been indexed.\r\n\r\nThis pull request easies
|
242
|
+
the addition and removal of indexes of single columns on/from a single table
|
243
|
+
by using the migration generator via CLI\r\n\r\nThe changelog as well as the
|
244
|
+
code provides the cases of use.\r\n\r\nLooking forward to your feedback.\r\n\r\nFrank
|
245
|
+
Pimenta"},{"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
|
246
|
+
ability to specify how a class is converted to Arel predicate when passed
|
247
|
+
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
|
248
|
+
adds the ability for rails apps or gems to have granular control\r\nover how
|
249
|
+
a domain object is converted to sql. One simple use case would\r\nbe to add
|
250
|
+
support for Regexp. Another simple case would be something\r\nlike the following:\r\n\r\n class
|
251
|
+
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
|
252
|
+
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,
|
253
|
+
DateRangePredicate.new)\r\n\r\nMore complex cases might include taking a currency
|
254
|
+
object and converting\r\nit from EUR to USD before performing the query.\r\n\r\nBy
|
255
|
+
moving the existing handlers to this format, we were also able to\r\nnicely
|
256
|
+
refactor a rather nasty method in PredicateBuilder.\r\n\r\nThis would also
|
257
|
+
make it fairly simple to add make it possible to define special handling for
|
258
|
+
individual columns (e.g. for things like database level encryption, which
|
259
|
+
currently requires massive hacking to perform). That''s probably suited for
|
260
|
+
a separate pull request, though."},{"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
|
261
|
+
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
|
262
|
+
makes find_or_create() safe to use with concurrent requests by\r\nrelying
|
263
|
+
on unique indexes to raise errors if the INSERT fails. By doing\r\nthe SELECT
|
264
|
+
first, we leave this method open to the same race conditions\r\nthat affect
|
265
|
+
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
|
266
|
+
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":[{"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-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
|
267
|
+
is related to the issue: #3002 and the pull requests: #5494, #10164, #10303.\r\nI''m
|
268
|
+
testing this in master branch.\r\n\r\nI have a failing test here: https://github.com/iwiznia/rails/commit/d12343fe4fd65b94f48bb0df5a99177cd8d6ba20\r\nI
|
269
|
+
don''t know if I need to open a pull request just with a failing test or just
|
270
|
+
report it here.\r\n\r\nBasically, this works:\r\n```ruby\r\nspecial_comments_with_ratings
|
271
|
+
= SpecialComment.joins(:ratings)\r\nposts_with_special_comments_with_ratings
|
272
|
+
= Post.joins(:special_comments).merge(special_comments_with_ratings)\r\n```\r\nAnd
|
273
|
+
this fails with \"ActiveRecord::ConfigurationError: Association named ''INNER
|
274
|
+
JOIN \"ratings\" ON \"comments\".id = \"ratings\".comment_id'' was not found
|
275
|
+
on Post; perhaps you misspelled it?\":\r\n```ruby\r\nspecial_comments_with_ratings
|
276
|
+
= SpecialComment.joins(\"INNER JOIN #{Rating.quoted_table_name} ON #{SpecialComment.quoted_table_name}.id
|
277
|
+
= #{Rating.quoted_table_name}.comment_id\")\r\nposts_with_special_comments_with_ratings
|
278
|
+
= Post.joins(:special_comments).merge(special_comments_with_ratings)\r\n```\r\n\r\nIt
|
279
|
+
seems that this was working and got broken somewhere (I''m basing this on
|
280
|
+
this comment https://github.com/rails/rails/pull/5494#issuecomment-5262803
|
281
|
+
that states that merging a join using :symbol didn''t work but it did work
|
282
|
+
when sending a string, now the opposite is true).\r\n\r\n(I don''t know how
|
283
|
+
to fix the issue, so if anyone can point me in the right direction maybe I
|
284
|
+
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
|
285
|
+
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
|
286
|
+
a form that submits a file, when reading with:\r\n\r\n file = params[:file]\r\n @file
|
287
|
+
= file.read\r\n\r\nand presenting in a view\r\n\r\n <%= @file %>\r\n\r\nShows
|
288
|
+
the error: _incompatible character encodings: ASCII-8BIT and UTF-8_\r\n\r\nBut
|
289
|
+
if we read with\r\n\r\n file = File.read(params[:file].path)\r\n\r\nIt
|
290
|
+
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
|
291
|
+
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
|
292
|
+
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
|
293
|
+
\"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
|
294
|
+
a minor change. I only added \"postgis\" to the \"when\" clause to make it
|
295
|
+
recognize \"postgis\"."}]'
|
296
|
+
http_version:
|
297
|
+
recorded_at: Tue, 21 May 2013 20:03:39 GMT
|
298
|
+
recorded_with: VCR 2.5.0
|