无法加载需要的模块

时间:2014-03-10 18:19:37

标签: ruby runtime-error erb

我有一个模块(cgi_helper.rb),一个调用该模块的cgi和一个html模板。我收到以下错误:

  

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in require': cannot load such file -- cgi_helper (LoadError) from >/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in require'           来自lab4.cgi:8:在''

模块:http://pastebin.com/YFj0rC8p

CGI:http://pastebin.com/xs5LiV2a

我无法弄清楚为什么找不到该模块。它是可执行的,与cgi在同一个目录中。这是erb模板。

<table>
<tr>
<th>Number</th>
<th>Username</th>
<th>Passwd</th>
<th>UID</th>
<th>GID</th>
<th>Home Dir</th>
<th>Shell</th>
<% students.each do |x| %>
<% next if eachname[x].nil? %>
<% s = Student.new(eachname[x].split(':')) %>
<tr>
<% columns.each do |c| %>
<td><%= s.send(c).to_s %></td>
<% end %>
</tr>
<% end %>
</table>
<% finish = Time.now %>
<h2> Total Elapsed Time:<%= (finish.to_f - start.to_f).to_s %></h2>

2 个答案:

答案 0 :(得分:0)

你应该改变

require 'cgi_helper'

require File.expand_path(File.dirname(__FILE__) + '/cgi_helper')

或将非移位置于脚本顶部

$:.unshift File.dirname(__FILE__)

require 'erb'
require 'cgi_helper'
include CgiHelper

有关require的详细信息。

答案 1 :(得分:0)

首先关闭:require不加载模块,加载文件。

require$LOAD_PATH加载文件,如果cgi_helper.rb文件所在的目录不在$LOAD_PATH上,则无法找到该文件。应该是包管理系统(例如RubyGems)的工作来调整$LOAD_PATH,以便找到您的文件。

如果要加载相对于正在加载的文件位置的文件,则应使用require_relative

require_relative 'cgi_helper'

多年来没有必要手动摆弄$LOAD_PATH