Skip to content

Commit

Permalink
Merge branch 'master' of github.com:rubygems/gem-testers
Browse files Browse the repository at this point in the history
  • Loading branch information
Josiah Kiehl committed Feb 14, 2011
2 parents 21ade95 + d23c0fd commit 08b115f
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 53 deletions.
6 changes: 3 additions & 3 deletions app/controllers/rubygems_controller.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
require 'rss_feed'
require 'show_paged'


class RubygemsController < ApplicationController

include ShowPaged
Expand Down Expand Up @@ -57,8 +56,9 @@ def feed
end

if rubygem
headers["Content-Type"] = "application/atom+xml"
render :text => generate_feed(rubygem)
respond_to do |format|
format.xml { render :text => generate_feed(rubygem) }
end
else
head 403
end
Expand Down
29 changes: 18 additions & 11 deletions app/controllers/test_results_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ def index
end
end


def create
@response = Response.new

Expand Down Expand Up @@ -58,21 +57,29 @@ def create
end

def show
@result = TestResult.where(id: params[:id]).first

# HACK HACK HACK
# please see the comments relating to the json problem in the versions
# controller's show action
# HACK HACK HACK

result_id = params[:id]

if params[:id] =~ /\.json$/
result_id = params[:id].sub(/\.json$/, '')
request.format = :json
end

if @result.nil? and params[:format].nil?
@result = TestResult.where(id: result_id).first

if @result.nil? and request.format != :json
flash[:notice] = "We could not locate that test result."
(redirect_to :back rescue redirect_to root_url) and return
end

# rails likes Accept: for respond_to - we would prefer to be able to debug
# our application in a reasonable manner.
case File.extname request.fullpath
when '.json'
headers["Content-Type"] = "application/json"
render json: (@result || {})
else
render
respond_to do |format|
format.json { render json: (@result || {}) }
format.html
end
end

Expand Down
75 changes: 44 additions & 31 deletions app/controllers/versions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,46 +9,59 @@ def index
end

def show
# /gems/somegem/1.2.3.json routes to id: 1.2.3.json,
# not id: 1.2.3, format: json, so parse the .json off the end of
# the string and set a flag to render the proper format.
respond_to_json = !!(params[:id] =~ /(.+)\.json$/)
version_number = $1 || params[:id]

version_number = params[:id]

# HACK HACK HACK
#
# rails can't handle version numbers PLUS the .json extension properly.
# the Accepts: header works fine of course, but if passed a .json extension
# it will be part of the :id. So, we detect this, scrub the extension and
# set the format.
#
# HACK HACK HACK
if params[:id] =~ /\.json$/
version_number = params[:id].sub(/\.json$/, '')
request.format = :json
end

@rubygem = Rubygem.where(name: params[:rubygem_id]).first
@version = Version.where(number: version_number, rubygem_id: @rubygem.id).first if @rubygem
@platform = params[:platform] unless params[:platform].blank?

if respond_to_json
if @version.nil?
render json: {}
else
render json: @version, include: [:test_results], methods: [:pass_count, :fail_count]
end
else
if @rubygem.nil?
flash[:notice] = "Couldn't find that gem!"
redirect_to rubygems_path and return

respond_to do |format|
format.json do
if @version.nil?
render json: {}
else
render json: @version, include: [:test_results], methods: [:pass_count, :fail_count]
end
end

if @version.nil?
flash[:notice] = "That version doesn't seem to exist."
redirect_to rubygem_path(@rubygem.name) and return
else
if @rubygem and @version
@paged_source = version_paged_path(@rubygem.name, @version.number, %q[json])
if @platform
@paged_source += "?platform=#{@platform}"
@test_results = TestResult.where(rubygem_id: @rubygem.id, version_id: @version.id, platform: @platform).all
@all_test_results = TestResult.where(rubygem_id: @rubygem.id, version_id: @version.id).all
else
@test_results = @all_test_results = TestResult.where(rubygem_id: @rubygem.id, version_id: @version.id).all

format.html do
if @rubygem.nil?
flash[:notice] = "Couldn't find that gem!"
redirect_to rubygems_path and return
end

if @version.nil?
flash[:notice] = "That version doesn't seem to exist."
redirect_to rubygem_path(@rubygem.name) and return
else
if @rubygem and @version
@paged_source = version_paged_path(@rubygem.name, @version.number)
if @platform
@paged_source += "?platform=#{@platform}"
@test_results = TestResult.where(rubygem_id: @rubygem.id, version_id: @version.id, platform: @platform).all
@all_test_results = TestResult.where(rubygem_id: @rubygem.id, version_id: @version.id).all
else
@test_results = @all_test_results = TestResult.where(rubygem_id: @rubygem.id, version_id: @version.id).all
end
end
end
fill_results_page
end
fill_results_page
end
end

end

2 changes: 0 additions & 2 deletions app/models/version.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
class Version < ActiveRecord::Base

has_many :test_results
belongs_to :rubygem

validates_uniqueness_of :number, scope: [:rubygem_id]
validates_presence_of :number, :rubygem_id


before_save :check_prerelease

Expand Down
13 changes: 7 additions & 6 deletions config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
GemTesters::Application.routes.draw do
root :to => 'rubygems#index'

resources :rubygems, :path => 'gems' do
constraints :id => Rubygem::ROUTE_MATCHER do
get '/feed.xml' => 'rubygems#feed', :as => 'feed'
resources :rubygems, path: 'gems' do
constraints id: Rubygem::ROUTE_MATCHER do
get '/feed' => 'rubygems#feed', as: 'feed', format: :xml
get '/paged.:format' => 'rubygems#show_paged', as: 'paged'
resources :versions, :path => 'v' do
get '/paged.:format' => 'versions#show_paged', as: 'paged'
resources :test_results
resources :versions, path: 'v' do
get '/paged' => 'versions#show_paged', as: 'paged', format: :json
get '/:id' => "versions#show", as: 'show', format: [:html, :json]
resources :test_results
end
end
end
Expand Down

0 comments on commit 08b115f

Please sign in to comment.