From a98ad14d68d8b37d272d2405df17a6a74902725c Mon Sep 17 00:00:00 2001 From: Nick Quaranto Date: Sun, 31 May 2009 20:38:59 -0400 Subject: [PATCH] Moving dependencies to versions instead of on rubygems --- app/models/dependency.rb | 2 +- app/models/rubygem.rb | 7 +++++-- app/models/version.rb | 1 + .../20090601003056_move_dependencies_to_versions.rb | 11 +++++++++++ db/schema.rb | 4 ++-- test/factories/dependency.rb | 1 - test/unit/dependency_test.rb | 2 +- test/unit/rubygem_test.rb | 11 +++++------ test/unit/version_test.rb | 1 + 9 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 db/migrate/20090601003056_move_dependencies_to_versions.rb diff --git a/app/models/dependency.rb b/app/models/dependency.rb index 0ac0fd326d7..9720e8b62f8 100644 --- a/app/models/dependency.rb +++ b/app/models/dependency.rb @@ -1,5 +1,5 @@ class Dependency < ActiveRecord::Base - belongs_to :rubygem + belongs_to :version validates_presence_of :name, :requirement end diff --git a/app/models/rubygem.rb b/app/models/rubygem.rb index 38d80b55688..8f03f8a395d 100644 --- a/app/models/rubygem.rb +++ b/app/models/rubygem.rb @@ -4,7 +4,6 @@ class Rubygem < ActiveRecord::Base belongs_to :user has_many :versions, :dependent => :destroy - has_many :dependencies, :dependent => :destroy validates_presence_of :name validates_uniqueness_of :name @@ -31,6 +30,10 @@ def current_version versions.last end + def current_dependencies + current_version.dependencies + end + def with_version "#{name} (#{current_version})" end @@ -51,7 +54,7 @@ def build :number => self.spec.original_name.gsub("#{self.spec.name}-", '')) self.spec.dependencies.each do |dependency| - self.dependencies.build( + version.dependencies.build( :name => dependency.name, :requirement => dependency.requirements_list.to_s) end diff --git a/app/models/version.rb b/app/models/version.rb index 438bfae8b22..1a43f50239d 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -1,6 +1,7 @@ class Version < ActiveRecord::Base include Pacecar belongs_to :rubygem + has_many :dependencies, :dependent => :destroy def to_s number diff --git a/db/migrate/20090601003056_move_dependencies_to_versions.rb b/db/migrate/20090601003056_move_dependencies_to_versions.rb new file mode 100644 index 00000000000..6f6c4de4f30 --- /dev/null +++ b/db/migrate/20090601003056_move_dependencies_to_versions.rb @@ -0,0 +1,11 @@ +class MoveDependenciesToVersions < ActiveRecord::Migration + def self.up + remove_column :dependencies, :rubygem_id + add_column :dependencies, :version_id, :integer + end + + def self.down + remove_column :dependencies, :version_id + add_column :dependencies, :rubygem_id, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index a29b8adbb28..17b05e4bfab 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -9,14 +9,14 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20090530162119) do +ActiveRecord::Schema.define(:version => 20090601003056) do create_table "dependencies", :force => true do |t| t.string "name" - t.integer "rubygem_id" t.string "requirement" t.datetime "created_at" t.datetime "updated_at" + t.integer "version_id" end create_table "rubygems", :force => true do |t| diff --git a/test/factories/dependency.rb b/test/factories/dependency.rb index e17020a21ea..6fa7af1f428 100644 --- a/test/factories/dependency.rb +++ b/test/factories/dependency.rb @@ -1,5 +1,4 @@ Factory.define :dependency do |dependency| dependency.name { 'string' } - dependency.rubygem_id { 1 } dependency.requirement { 'string' } end diff --git a/test/unit/dependency_test.rb b/test/unit/dependency_test.rb index c2ff8cca1ac..55116434dfb 100644 --- a/test/unit/dependency_test.rb +++ b/test/unit/dependency_test.rb @@ -1,7 +1,7 @@ require File.dirname(__FILE__) + '/../test_helper' class DependencyTest < ActiveSupport::TestCase - should_belong_to :rubygem + should_belong_to :version should_validate_presence_of :name, :requirement should "be valid with factory" do diff --git a/test/unit/rubygem_test.rb b/test/unit/rubygem_test.rb index 6c989c553e3..87fe95be68a 100644 --- a/test/unit/rubygem_test.rb +++ b/test/unit/rubygem_test.rb @@ -8,7 +8,6 @@ class RubygemTest < ActiveSupport::TestCase should_belong_to :user should_have_many :versions, :dependent => :destroy - should_have_many :dependencies, :dependent => :destroy should_validate_uniqueness_of :name should "return name for #to_s" do @@ -34,13 +33,13 @@ class RubygemTest < ActiveSupport::TestCase @rubygem.spec = spec @rubygem.build - assert_equal 2, @rubygem.dependencies.size + assert_equal 2, @rubygem.current_dependencies.size - assert_equal "liquid", @rubygem.dependencies.first.name - assert_equal ">= 1.9.0", @rubygem.dependencies.first.requirement + assert_equal "liquid", @rubygem.current_dependencies.first.name + assert_equal ">= 1.9.0", @rubygem.current_dependencies.first.requirement - assert_equal "open4", @rubygem.dependencies.last.name - assert_equal "= 0.9.6", @rubygem.dependencies.last.requirement + assert_equal "open4", @rubygem.current_dependencies.last.name + assert_equal "= 0.9.6", @rubygem.current_dependencies.last.requirement end should "include platform when saving version" do diff --git a/test/unit/version_test.rb b/test/unit/version_test.rb index f775f6438e3..d07647f6de0 100644 --- a/test/unit/version_test.rb +++ b/test/unit/version_test.rb @@ -2,6 +2,7 @@ class VersionTest < ActiveSupport::TestCase should_belong_to :rubygem + should_have_many :dependencies, :dependent => :destroy context "with a version" do setup do