我有一个模块(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>
答案 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
。