【发布时间】:2012-12-21 17:44:11
【问题描述】:
我有一个旧的 Rails 项目需要更改甚至更新。
我的宝石列表如下所示:
*** LOCAL GEMS ***
actionmailer (2.3.14, 2.3.11, 2.3.8, 2.3.5, 2.3.2)
actionpack (2.3.14, 2.3.11, 2.3.8, 2.3.5, 2.3.2)
activerecord (2.3.14, 2.3.11, 2.3.8, 2.3.5, 2.3.2)
activeresource (2.3.14, 2.3.11, 2.3.8, 2.3.5, 2.3.2)
activesupport (3.2.9, 2.3.14, 2.3.11, 2.3.8, 2.3.5, 2.3.2)
addressable (2.3.2)
BlueCloth (1.0.1)
bourne (1.1.2)
bundler (1.2.3)
childprocess (0.3.6)
ffi (1.2.0)
i18n (0.6.1)
json (1.7.5)
libwebsocket (0.1.7.1)
metaclass (0.0.1)
mocha (0.10.5)
multi_json (1.5.0)
mysql (2.8.1)
paperclip (2.3.1.1)
rack (1.1.3, 1.0.1)
rails (2.3.14, 2.3.2)
rake (0.8.7)
rdoc (3.12)
restful_authentication (1.1.6)
rspec (1.3.1)
ruby-net-ldap (0.0.4)
rubygems-bundler (1.1.0)
rubyzip (0.9.9)
rvm (1.11.3.5)
selenium-client (1.2.18)
selenium-webdriver (2.27.2)
shoulda (2.11.3)
shoulda-context (1.0.2)
shoulda-matchers (1.4.2)
thoughtbot-shoulda (2.11.1)
websocket (1.0.6)
当我运行rake test 时,我得到:
/Users/noah/.rvm/gems/ruby-1.8.7-p371@website/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:469:in `load_missing_constant': uninitialized constant AuthenticatedTestHelper (NameError)
from /Users/noah/.rvm/gems/ruby-1.8.7-p371@website/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:106:in `const_missing'
from /Users/noah/.rvm/gems/ruby-1.8.7-p371@website/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:118:in `const_missing'
from ./test/test_helper.rb:4
from ./test/functional/admin/articles_controller_test.rb:1:in `require'
from ./test/functional/admin/articles_controller_test.rb:1
from /Users/noah/.rvm/gems/ruby-1.8.7-p371@website/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `load'
from /Users/noah/.rvm/gems/ruby-1.8.7-p371@website/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
from /Users/noah/.rvm/gems/ruby-1.8.7-p371@website/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `each'
from /Users/noah/.rvm/gems/ruby-1.8.7-p371@website/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
/Users/noah/.rvm/rubies/ruby-1.8.7-p371/bin/ruby -I"lib:test" "/Users/noah/.rvm/gems/ruby-1.8.7-p371@website/gems/rake-0.8.7/lib/rake/rake_test_loader.rb"
Errors running test:units and test:functionals!
这是我的测试助手的第一部分:
ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'test_help'
include AuthenticatedTestHelper
任何包含include AuthenticatedTestHelper 的地方都会失败。关于为什么会这样的任何想法?
更新:
我认为我的问题是 restful_authentication 无法生成提供 AuthenticatedTestHelper 的文件。
在依赖项中,我有以下内容:
qualified_name = qualified_name_for from_mod, const_name
path_suffix = qualified_name.underscore
name_error = NameError.new("uninitialized constant #{qualified_name}")
file_path = search_for_file(path_suffix)
if file_path && ! loaded.include?(File.expand_path(file_path)) # We found a matching file to load
require_or_load file_path
raise LoadError, "Expected #{file_path} to define #{qualified_name}" unless uninherited_const_defined?(from_mod, const_name)
return from_mod.const_get(const_name)
elsif mod = autoload_module!(from_mod, const_name, qualified_name, path_suffix)
return mod
elsif (parent = from_mod.parent) && parent != from_mod &&
! from_mod.parents.any? { |p| uninherited_const_defined?(p, const_name) }
# If our parents do not have a constant named +const_name+ then we are free
# to attempt to load upwards. If they do have such a constant, then this
# const_missing must be due to from_mod::const_name, which should not
# return constants from from_mod's parents.
begin
return parent.const_missing(const_name)
rescue NameError => e
raise unless e.missing_name? qualified_name_for(parent, const_name)
raise name_error
end
else
puts file_path #added this line
raise name_error
end
end
并且我已经添加了 puts file_path 行,这是 nil,所以 rails 也不知道这个文件在哪里。有什么想法吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-2