Skip to content

Commit

Permalink
Merge branch 'create-models' into create-controllers
Browse files Browse the repository at this point in the history
  • Loading branch information
zuhao committed Jun 20, 2012
2 parents b1a7796 + 5e136fb commit 712edee
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 20 deletions.
45 changes: 26 additions & 19 deletions app/models/fedora_rpm.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,37 @@ class FedoraRpm < ActiveRecord::Base
scope :popular, :order => 'rpm_comments_count desc'

def self.new_from_rpm_tuple(rpm_tuple)
# it comes in "rpm_name.git firstname+lastname" format
rpm = rpm_tuple.split.first
f = find_or_initialize_by_name(rpm.gsub(/\.git/,''))
if f.new_record?
f.name = rpm.gsub(/\.git/,'')
f.author = rpm_tuple.split.last.gsub(/\+/,' ')
f.git_url = "git://pkgs.fedoraproject.org/#{rpm}"
begin
rpm_spec = URI.parse("#{RpmImporter::RPM_SPEC_URI};p=#{rpm};f=#{rpm.gsub(/git$/,'spec')}").read
f.version = rpm_spec.scan(/\nVersion: .*\n/).first.split.last
f.homepage = rpm_spec.scan(/\nURL: .*\n/).first.split.last
rescue OpenURI::HTTPError
# some rpms do not have spec file
rescue NoMethodError
# some spec files do not have Version or URL
end
f.ruby_gem = RubyGem.find_by_name(f.name.gsub(/rubygem-/,''))
f.name = rpm.gsub(/\.git/,'')
f.author = rpm_tuple.split.last.gsub(/\+/,' ')
f.git_url = "git://pkgs.fedoraproject.org/#{rpm}"
f.ruby_gem = RubyGem.find_by_name(f.name.gsub(/rubygem-/,''))

begin
rpm_spec = URI.parse("#{RpmImporter::RPM_SPEC_URI};p=#{rpm};f=#{rpm.gsub(/git$/,'spec')}").read
f.version = rpm_spec.scan(/\nVersion: .*\n/).first.split.last
f.homepage = rpm_spec.scan(/\nURL: .*\n/).first.split.last
# TODO: more info can be extracted
f.save!
logger.info("Rpm #{f.name} imported")
else
logger.info("Rpm #{f.name} already existed")
rescue OpenURI::HTTPError
# some rpms do not have spec file
rescue NoMethodError
# some spec files do not have Version or URL
end

begin
g = f.ruby_gem
g.has_rpm = true
g.save
rescue NoMethodError
# some rpm does not have corresponding gem
end

f.save!
logger.info("Rpm #{f.name} imported")
rescue => e
logger.info("Could not import #{rpm_tuple['name']}\n #{e.to_s}")
logger.info("Could not import #{rpm_tuple.split.first}")
end

def rpm_name
Expand Down
Binary file modified db/development.sqlite3
Binary file not shown.
11 changes: 11 additions & 0 deletions db/migrate/20120619162832_add_reference_to_ruby_gem.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class AddReferenceToRubyGem < ActiveRecord::Migration
def change
change_table :ruby_gems do |t|
t.references :fedora_rpm
end

change_table :fedora_rpms do |t|
t.references :ruby_gem
end
end
end
7 changes: 7 additions & 0 deletions db/migrate/20120620123237_remove_redundant_ref_in_ruby_gem.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class RemoveRedundantRefInRubyGem < ActiveRecord::Migration
def change
change_table :ruby_gems do |t|
t.remove :fedora_rpm_id
end
end
end
3 changes: 2 additions & 1 deletion db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.

ActiveRecord::Schema.define(:version => 20120618141450) do
ActiveRecord::Schema.define(:version => 20120620123237) do

create_table "fedora_rpms", :force => true do |t|
t.string "name", :null => false
Expand All @@ -26,6 +26,7 @@
t.string "last_commit_sha"
t.string "homepage"
t.string "version"
t.integer "ruby_gem_id"
end

create_table "gem_comments", :force => true do |t|
Expand Down

0 comments on commit 712edee

Please sign in to comment.