Skip to content

Commit

Permalink
Fixing requirements in a migration instead
Browse files Browse the repository at this point in the history
  • Loading branch information
qrush committed Oct 27, 2009
1 parent ec1c662 commit 0d7b493
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 19 deletions.
3 changes: 2 additions & 1 deletion app/models/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class Version < ActiveRecord::Base
:include => :rubygem,
:order => "versions.built_at desc" }
named_scope :latest, { :conditions => { :latest => true }}
named_scope :with_deps, { :include => {:dependencies => :rubygem} }
named_scope :prerelease, { :conditions => { :prerelease => true }}
named_scope :release, { :conditions => { :prerelease => false }}

Expand Down Expand Up @@ -160,7 +161,7 @@ def to_spec
spec.summary = summary

dependencies.each do |dep|
spec.add_dependency(dep.rubygem.name, dep.requirements)
spec.add_dependency(dep.rubygem.name, dep.requirements.split(', '))
end
end
end
Expand Down
23 changes: 23 additions & 0 deletions db/migrate/20091026234707_fix_dependencies.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class FixDependencies < ActiveRecord::Migration
def self.up
# fix bad version reqs
Dependency.all.each do |dep|
reqs = dep.requirements
begin
Gem::Requirement.new(reqs)
rescue ArgumentError => ex
list = reqs.split(/(>=)|(<=)|(~>)|(>)|(<)|(=)/).reject(&:empty?)
fixed = list[0] + list[1] + ", " + list[2] + list[3]

dep.update_attribute(:requirements, fixed)
end
end

# kill bad deps too
Dependency.all(:include => :rubygem).select { |v| v.rubygem.nil? }.each { |d| d.destroy }
end

def self.down
# yeah, no way
end
end
2 changes: 1 addition & 1 deletion db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#
# It's strongly recommended to check this file into your version control system.

ActiveRecord::Schema.define(:version => 20091021203534) do
ActiveRecord::Schema.define(:version => 20091026234707) do

create_table "delayed_jobs", :force => true do |t|
t.integer "priority", :default => 0
Expand Down
15 changes: 0 additions & 15 deletions lib/tasks/gemcutter.rake
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,6 @@ namespace :gemcutter do
Rake::Task["gemcutter:import:process"].execute
end

desc "Fix dependencies"
task :fix_deps => :environment do
Dependency.all.each do |dep|
reqs = dep.requirements
begin
Gem::Requirement.new(reqs)
rescue ArgumentError => ex
list = reqs.split(/(>=)|(<=)|(~>)|(>)|(<)|(=)/).reject(&:empty?)
fixed = list[0] + list[1] + ", " + list[2] + list[3]

dep.update_attribute(:requirements, fixed)
end
end
end

namespace :index do
desc "Create the index"
task :create => :environment do
Expand Down
4 changes: 2 additions & 2 deletions test/unit/version_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -135,13 +135,13 @@ class VersionTest < ActiveSupport::TestCase
end

should "create gemspec with some dependencies" do
@dep_one = Factory(:dependency, :version => @version, :requirements => ">= 1.2.3")
@dep_one = Factory(:dependency, :version => @version, :requirements => ">= 0, = 1.2.3")
@dep_two = Factory(:dependency, :version => @version, :requirements => "= 3.0.0")
spec = @version.to_spec

assert_equal 2, spec.dependencies.size
assert_equal @dep_one.rubygem.name, spec.dependencies.last.name
assert_equal [@dep_one.requirements], spec.dependencies.last.requirements_list
assert_equal @dep_one.requirements.split(", "), spec.dependencies.last.requirements_list

assert_equal @dep_two.rubygem.name, spec.dependencies.first.name
assert_equal [@dep_two.requirements], spec.dependencies.first.requirements_list
Expand Down

0 comments on commit 0d7b493

Please sign in to comment.