diff --git a/app/controllers/errs_controller.rb b/app/controllers/errs_controller.rb index d09074e..a5cae56 100644 --- a/app/controllers/errs_controller.rb +++ b/app/controllers/errs_controller.rb @@ -36,7 +36,8 @@ class ErrsController < ApplicationController flash[:error] = "This up has no issue tracker setup." end redirect_to app_err_path(@app, @err) - rescue ActiveResource::ConnectionError + rescue ActiveResource::ConnectionError => e + Rails.logger.error e.to_s flash[:error] = "There was an error during issue creation. Check your tracker settings or try again later." redirect_to app_err_path(@app, @err) end diff --git a/app/models/issue_tracker.rb b/app/models/issue_tracker.rb index 44d3bfe..72c50ac 100644 --- a/app/models/issue_tracker.rb +++ b/app/models/issue_tracker.rb @@ -22,15 +22,16 @@ class IssueTracker protected def create_redmine_issue err token = api_token + acc = account RedmineClient::Base.configure do self.token = token + self.site = acc end - RedmineClient::Issue.site = account + "/projects/:project_id" issue = RedmineClient::Issue.new(:project_id => project_id) issue.subject = issue_title err issue.description = self.class.redmine_body_template.result(binding) issue.save! - err.update_attribute :issue_link, "#{RedmineClient::Issue.site.to_s.sub(/#{RedmineClient::Issue.site.path}$/, '')}#{RedmineClient::Issue.element_path(issue.id, :project_id => project_id)}".sub(/\.xml$/, '') + err.update_attribute :issue_link, "#{RedmineClient::Issue.site.to_s.sub(/#{RedmineClient::Issue.site.path}$/, '')}#{RedmineClient::Issue.element_path(issue.id, :project_id => project_id)}".sub(/\.xml\?project_id=#{project_id}$/, "\?project_id=#{project_id}") end def create_lighthouseapp_issue err diff --git a/spec/controllers/errs_controller_spec.rb b/spec/controllers/errs_controller_spec.rb index 145ba7a..86f8fb4 100644 --- a/spec/controllers/errs_controller_spec.rb +++ b/spec/controllers/errs_controller_spec.rb @@ -261,17 +261,18 @@ describe ErrsController do before(:each) do number = 5 - @issue_link = "#{tracker.account}/projects/#{tracker.project_id}/issues/#{number}.xml" - body = "#{number}" - stub_request(:post, "#{tracker.account}/projects/#{tracker.project_id}/issues.xml").to_return(:status => 201, :headers => {'Location' => @issue_link}, :body => body ) + @issue_link = "#{tracker.account}/issues/#{number}.xml?project_id=#{tracker.project_id}" + body = "my subject#{number}" + stub_request(:post, "#{tracker.account}/issues.xml").to_return(:status => 201, :headers => {'Location' => @issue_link}, :body => body ) post :create_issue, :app_id => err.app.id, :id => err.id err.reload end it "should make request to Redmine with err params" do - requested = have_requested(:post, "#{tracker.account}/projects/#{tracker.project_id}/issues.xml") + requested = have_requested(:post, "#{tracker.account}/issues.xml") WebMock.should requested.with(:headers => {'X-Redmine-API-Key' => tracker.api_token}) + WebMock.should requested.with(:body => /#{tracker.project_id}<\/project-id>/) WebMock.should requested.with(:body => /\[#{ err.environment }\]\[#{err.where}\] #{err.message.to_s.truncate(100)}<\/subject>/) WebMock.should requested.with(:body => /.+<\/description>/m) end @@ -281,7 +282,7 @@ describe ErrsController do end it "should create issue link for err" do - err.issue_link.should == @issue_link.sub(/\.xml$/, '') + err.issue_link.should == @issue_link.sub(/\.xml/, '') end end end -- libgit2 0.21.2