Commit 2b2d1d9f690355a7c7d3f83ecf323802ce4dcede
1 parent
14a18a0c
Exists in
master
and in
1 other branch
Renamed :github_url field to :github_repo in App model. (with implicit https://github.com/)
Showing
8 changed files
with
68 additions
and
47 deletions
Show diff stats
app/helpers/notices_helper.rb
... | ... | @@ -11,7 +11,7 @@ module NoticesHelper |
11 | 11 | def link_to_source_file(app, line, &block) |
12 | 12 | text = capture_haml(&block) |
13 | 13 | if in_app_backtrace_line?(line) |
14 | - return link_to_github(app, line, text) if app.github_url? | |
14 | + return link_to_github(app, line, text) if app.github_repo? | |
15 | 15 | if app.issue_tracker && app.issue_tracker.respond_to?(:url_to_file) |
16 | 16 | # Return link to file on tracker if issue tracker supports this |
17 | 17 | return link_to_issue_tracker_file(app, line, text) | ... | ... |
app/models/app.rb
... | ... | @@ -4,7 +4,7 @@ class App |
4 | 4 | |
5 | 5 | field :name, :type => String |
6 | 6 | field :api_key |
7 | - field :github_url | |
7 | + field :github_repo | |
8 | 8 | field :resolve_errs_on_deploy, :type => Boolean, :default => false |
9 | 9 | field :notify_all_users, :type => Boolean, :default => false |
10 | 10 | field :notify_on_errs, :type => Boolean, :default => true |
... | ... | @@ -28,7 +28,7 @@ class App |
28 | 28 | has_many :problems, :inverse_of => :app, :dependent => :destroy |
29 | 29 | |
30 | 30 | before_validation :generate_api_key, :on => :create |
31 | - before_save :normalize_github_url | |
31 | + before_save :normalize_github_repo | |
32 | 32 | after_update :store_cached_attributes_on_problems |
33 | 33 | |
34 | 34 | validates_presence_of :name, :api_key |
... | ... | @@ -112,14 +112,19 @@ class App |
112 | 112 | alias :notify_on_deploys? :notify_on_deploys |
113 | 113 | |
114 | 114 | |
115 | - def github_url? | |
116 | - self.github_url.present? | |
115 | + def github_repo? | |
116 | + self.github_repo.present? | |
117 | + end | |
118 | + | |
119 | + def github_url | |
120 | + "https://github.com/#{github_repo}" if github_repo? | |
117 | 121 | end |
118 | 122 | |
119 | 123 | def github_url_to_file(file) |
120 | - "#{self.github_url}/blob/master#{file}" | |
124 | + "#{github_url}/blob/master#{file}" | |
121 | 125 | end |
122 | 126 | |
127 | + | |
123 | 128 | def issue_tracker_configured? |
124 | 129 | !!(issue_tracker && issue_tracker.class < IssueTracker && issue_tracker.project_id.present?) |
125 | 130 | end |
... | ... | @@ -167,11 +172,11 @@ class App |
167 | 172 | end |
168 | 173 | end |
169 | 174 | |
170 | - def normalize_github_url | |
171 | - return if self.github_url.blank? | |
172 | - self.github_url.gsub!(%r{^http://|git@}, 'https://') | |
173 | - self.github_url.gsub!(/github\.com:/, 'github.com/') | |
174 | - self.github_url.gsub!(/\.git$/, '') | |
175 | + def normalize_github_repo | |
176 | + return if github_repo.blank? | |
177 | + github_repo.strip! | |
178 | + github_repo.sub!(/(git@|https?:\/\/)github\.com(\/|:)/, '') | |
179 | + github_repo.sub!(/\.git$/, '') | |
175 | 180 | end |
176 | 181 | end |
177 | 182 | ... | ... |
app/views/apps/_fields.html.haml
... | ... | @@ -5,8 +5,8 @@ |
5 | 5 | = f.text_field :name |
6 | 6 | |
7 | 7 | %div |
8 | - = f.label :github_url | |
9 | - = f.text_field :github_url | |
8 | + = f.label :github_repo | |
9 | + = f.text_field :github_repo, :placeholder => "errbit/errbit from https://github.com/errbit/errbit" | |
10 | 10 | |
11 | 11 | %fieldset |
12 | 12 | %legend Notifications | ... | ... |
app/views/apps/show.html.haml
... | ... | @@ -41,7 +41,7 @@ |
41 | 41 | %td |
42 | 42 | %em Sadly, no one is watching this app |
43 | 43 | |
44 | -- if @app.github_url? | |
44 | +- if @app.github_repo? | |
45 | 45 | %h3#repository_toggle |
46 | 46 | Repository |
47 | 47 | %span.click_span (show/hide) |
... | ... | @@ -49,10 +49,10 @@ |
49 | 49 | %table.repository |
50 | 50 | %thead |
51 | 51 | %tr |
52 | - %th GitHub | |
52 | + %th GitHub Repo | |
53 | 53 | %tbody |
54 | 54 | %tr |
55 | - %td= link_to(@app.github_url, @app.github_url, :target => '_blank') | |
55 | + %td= link_to(@app.github_repo, @app.github_url, :target => '_blank') | |
56 | 56 | |
57 | 57 | %h3#deploys_toggle |
58 | 58 | Latest Deploys | ... | ... |
db/migrate/20120603112130_change_github_url_to_github_repo.rb
0 → 100644
... | ... | @@ -0,0 +1,18 @@ |
1 | +class ChangeGithubUrlToGithubRepo < Mongoid::Migration | |
2 | + def self.up | |
3 | + App.collection.update({}, {'$rename' => {'github_url' => 'github_repo'}}, multi: true, safe: true) | |
4 | + App.all.each do |app| | |
5 | + app.send :normalize_github_repo | |
6 | + app.save! | |
7 | + end | |
8 | + end | |
9 | + | |
10 | + def self.down | |
11 | + App.collection.update({}, {'$rename' => {'github_repo' => 'github_url'}}, multi: true, safe: true) | |
12 | + App.all.each do |app| | |
13 | + unless app.github_repo.include?("github.com") | |
14 | + app.update_attribute :github_url, "https://github.com/" << app.github_url | |
15 | + end | |
16 | + end | |
17 | + end | |
18 | +end | ... | ... |
lib/overrides/hoptoad_notifier/hoptoad_notifier.rb
... | ... | @@ -9,10 +9,8 @@ HoptoadNotifier.module_eval do |
9 | 9 | # Log the error internally if we are not in a development environment. |
10 | 10 | if configuration.public? |
11 | 11 | app = App.find_or_initialize_by(:name => "Self.Errbit") |
12 | - if app.new? | |
13 | - app.github_url = "https://github.com/errbit/errbit.git" | |
14 | - app.save! | |
15 | - end | |
12 | + app.github_repo = "errbit/errbit" | |
13 | + app.save! | |
16 | 14 | notice.send("api_key=", app.api_key) |
17 | 15 | |
18 | 16 | # Create notice internally. | ... | ... |
spec/controllers/apps_controller_spec.rb
... | ... | @@ -177,12 +177,12 @@ describe AppsController do |
177 | 177 | |
178 | 178 | it "should copy attributes from an existing app" do |
179 | 179 | @app = Fabricate(:app, :name => "do not copy", |
180 | - :github_url => "github.com/test/example") | |
180 | + :github_repo => "test/example") | |
181 | 181 | get :new, :copy_attributes_from => @app.id |
182 | 182 | assigns(:app).should be_a(App) |
183 | 183 | assigns(:app).should be_new_record |
184 | 184 | assigns(:app).name.should be_blank |
185 | - assigns(:app).github_url.should == "github.com/test/example" | |
185 | + assigns(:app).github_repo.should == "test/example" | |
186 | 186 | end |
187 | 187 | end |
188 | 188 | ... | ... |
spec/models/app_spec.rb
... | ... | @@ -37,53 +37,53 @@ describe App do |
37 | 37 | app.api_key.should match(/^[a-f0-9]{32}$/) |
38 | 38 | end |
39 | 39 | |
40 | - it 'is fine with blank github urls' do | |
41 | - app = Fabricate.build(:app, :github_url => "") | |
40 | + it 'is fine with blank github repos' do | |
41 | + app = Fabricate.build(:app, :github_repo => "") | |
42 | 42 | app.save |
43 | - app.github_url.should == "" | |
43 | + app.github_repo.should == "" | |
44 | 44 | end |
45 | 45 | |
46 | - it 'does not touch https github urls' do | |
47 | - app = Fabricate.build(:app, :github_url => "https://github.com/errbit/errbit") | |
46 | + it 'doesnt touch github user/repo' do | |
47 | + app = Fabricate.build(:app, :github_repo => "errbit/errbit") | |
48 | 48 | app.save |
49 | - app.github_url.should == "https://github.com/errbit/errbit" | |
49 | + app.github_repo.should == "errbit/errbit" | |
50 | 50 | end |
51 | 51 | |
52 | - it 'normalizes http github urls' do | |
53 | - app = Fabricate.build(:app, :github_url => "http://github.com/errbit/errbit") | |
52 | + it 'removes domain from https github repos' do | |
53 | + app = Fabricate.build(:app, :github_repo => "https://github.com/errbit/errbit") | |
54 | 54 | app.save |
55 | - app.github_url.should == "https://github.com/errbit/errbit" | |
55 | + app.github_repo.should == "errbit/errbit" | |
56 | 56 | end |
57 | 57 | |
58 | - it 'normalizes public git repo as a github url' do | |
59 | - app = Fabricate.build(:app, :github_url => "https://github.com/errbit/errbit.git") | |
58 | + it 'normalizes public git repo as a github repo' do | |
59 | + app = Fabricate.build(:app, :github_repo => "https://github.com/errbit/errbit.git") | |
60 | 60 | app.save |
61 | - app.github_url.should == "https://github.com/errbit/errbit" | |
61 | + app.github_repo.should == "errbit/errbit" | |
62 | 62 | end |
63 | 63 | |
64 | - it 'normalizes private git repo as a github url' do | |
65 | - app = Fabricate.build(:app, :github_url => "git@github.com:errbit/errbit.git") | |
64 | + it 'normalizes private git repo as a github repo' do | |
65 | + app = Fabricate.build(:app, :github_repo => "git@github.com:errbit/errbit.git") | |
66 | 66 | app.save |
67 | - app.github_url.should == "https://github.com/errbit/errbit" | |
67 | + app.github_repo.should == "errbit/errbit" | |
68 | 68 | end |
69 | 69 | end |
70 | 70 | |
71 | 71 | context '#github_url_to_file' do |
72 | 72 | it 'resolves to full path to file' do |
73 | - app = Fabricate(:app, :github_url => "https://github.com/errbit/errbit") | |
73 | + app = Fabricate(:app, :github_repo => "errbit/errbit") | |
74 | 74 | app.github_url_to_file('/path/to/file').should == "https://github.com/errbit/errbit/blob/master/path/to/file" |
75 | 75 | end |
76 | 76 | end |
77 | 77 | |
78 | - context '#github_url?' do | |
79 | - it 'is true when there is a github_url' do | |
80 | - app = Fabricate(:app, :github_url => "https://github.com/errbit/errbit") | |
81 | - app.github_url?.should be_true | |
78 | + context '#github_repo?' do | |
79 | + it 'is true when there is a github_repo' do | |
80 | + app = Fabricate(:app, :github_repo => "errbit/errbit") | |
81 | + app.github_repo?.should be_true | |
82 | 82 | end |
83 | 83 | |
84 | - it 'is false when no github_url' do | |
84 | + it 'is false when no github_repo' do | |
85 | 85 | app = Fabricate(:app) |
86 | - app.github_url?.should be_false | |
86 | + app.github_repo?.should be_false | |
87 | 87 | end |
88 | 88 | end |
89 | 89 | |
... | ... | @@ -102,12 +102,12 @@ describe App do |
102 | 102 | |
103 | 103 | context "copying attributes from existing app" do |
104 | 104 | it "should only copy the necessary fields" do |
105 | - @app, @copy_app = Fabricate(:app, :name => "app", :github_url => "url"), | |
106 | - Fabricate(:app, :name => "copy_app", :github_url => "copy url") | |
105 | + @app, @copy_app = Fabricate(:app, :name => "app", :github_repo => "url"), | |
106 | + Fabricate(:app, :name => "copy_app", :github_repo => "copy url") | |
107 | 107 | @copy_watcher = Fabricate(:watcher, :email => "copywatcher@example.com", :app => @copy_app) |
108 | 108 | @app.copy_attributes_from(@copy_app.id) |
109 | 109 | @app.name.should == "app" |
110 | - @app.github_url.should == "copy url" | |
110 | + @app.github_repo.should == "copy url" | |
111 | 111 | @app.watchers.first.email.should == "copywatcher@example.com" |
112 | 112 | end |
113 | 113 | end | ... | ... |