1

我想将 XML 文件中的数据导入到我的 SQLite 表中。我该怎么办?我真的需要一些帮助。这是我的代码,我不知道这些有什么问题。

require 'rubygems'
require 'nokogiri'
require 'open-uri'
class AddCoursesData < ActiveRecord::Migration
  def up
    Course.delete_all
    courses = Nokogiri::XML(File.open("courses.xml"))

    courses.css('course').each do |node|
      children = node.children

      Course.create(
        acode: node['acode'],
        code: node['code'],
        sgid: node['sgid'],
        name: children.css('name').inner_text,
        ects: children.css('ects').inner_text,
        year: children.css('year').inner_text,
        period: children.css('period').inner_text,
        institute: children.css('institute').inner_text,
        description: children.css('description').inner_text,
        timetable: children.css('timetable').inner_text,
        lecture_material: children.css('lecture_material').inner_text,
        goals: children.css('goals').inner_text,
        participant_count: children.css('participant_count').inner_text,
        specialities: children.css('specialities').inner_text,
        examination: children.css('examination').inner_text
      )

    end
  end

  def down
  end
end

然后我输入

>rake db:migrate  

它说

"rake aborted!
 cannot load such file -- nokogiri
 D:in 'migrate'
 Tasks: TOP=> db:migrate"

我已经安装了 nokogiri。我真的不知道如何导入这些数据。那么你能帮我解决这个问题吗?非常感谢你!!

这是我的 ruby​​gems 环境

D:\BitNami\rubystack\rubywork\UvAcourses>gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.3
  - RUBY VERSION: 1.9.3 (2012-05-25 patchlevel 231) [i386-mingw32]
  - INSTALLATION DIRECTORY: D:/BitNami/rubystack/ruby/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: D:/BitNami/rubystack/ruby/bin/ruby.exe
  - EXECUTABLE DIRECTORY: D:/BitNami/rubystack/ruby/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mingw32
  - GEM PATHS:
     - D:/BitNami/rubystack/ruby/lib/ruby/gems/1.9.1
     - C:/Users/Lulu/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
4

1 回答 1

0

你的红宝石几岁了?

在 Ruby 1.8.7 之前,我们必须从以下内容开始我们的需求列表:

require 'rubygems'

因为 RubyGems 不是 Ruby 标准库的一部分。如果我们不这样做,我们将无法找到所有外部(非核心和非标准库)gem。

现在没有必要了。

判断是否安装了 Nokogiri 的其他方法是在命令行中键入:

gem list nokogiri
which nokogiri

第一个查看已安装 gem 的内部列表。第二个询问 Linux 或 Mac OS OS 是否看到 gem 安装的“nokogiri”命令。

于 2013-07-04T14:08:22.577 回答