2013-02-25 77 views
1

我正在尝试为从以前的开发人员传递给我的ROR应用程序设置本地开发环境。我是ROR和Ruby的新手。Action Controller:异常捕获[Home#索引中的NoMethodError]

首先我运行bundle install没有问题,然后mongod。当我运行rails s服务器启动,但它输出host is not a valid option for Mongo::Connection。当我尝试去http://0.0.0.0:3000出现错误信息。 NoMethodError in Home#index

错误指向以下路径:

显示/Users/ryansnyder/Rails/myAppX/app/views/home/index.html.haml其中行#12提出:

undefined method 'url' for nil:NilClass

提取的源(围绕线#12):

9:  %h2 Asset Protection 
10:  = link_to image_tag('asset-protection-guide.png'), 'http://myAppX.s3.amazonaws.com/assets/downloads/myAppX-AssetProtectionGuide.pdf', :title => 'Asset Protection Guide', :alt => 'Download our Asset Protection Guide', :target => '_blank' 
11: %section#graphs 
12:  = link_to image_tag(@chart.url, :alt => @chart.alt), eval(@chart.link), :title => @chart.title 
13: 
14: %section#recent-happenings 
15: %section#upcoming-events 

我在注释该行.haml文件,并刷新http://0.0.0.0:3000并收到另一个undefined method 'question' for nil:NilClass错误。我认为这是一个数据库或错误处理问题。但我只是在猜测。

编辑: 我不知道这是否有帮助,但运行时rake test我收到以下输出。

host is not a valid option for Mongo::Connection 
/Users/ryansnyder/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.19/lib/active_support/dependencies.rb:242:in `require': no such file to load -- turn (LoadError) 
    from /Users/ryansnyder/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.19/lib/active_support/dependencies.rb:242:in `block in require' 
    from /Users/ryansnyder/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.19/lib/active_support/dependencies.rb:227:in `load_dependency' 
    from /Users/ryansnyder/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.19/lib/active_support/dependencies.rb:242:in `require' 
    from /Users/ryansnyder/Rails/alerstallings-master/test/test_helper.rb:4:in `<top (required)>' 
    from /Users/ryansnyder/Rails/alerstallings-master/test/functional/lawyers_controller_test.rb:1:in `require' 
    from /Users/ryansnyder/Rails/alerstallings-master/test/functional/lawyers_controller_test.rb:1:in `<top (required)>' 
    from /Users/ryansnyder/.rvm/gems/[email protected]/gems/rake-10.0.3/lib/rake/rake_test_loader.rb:10:in `require' 
    from /Users/ryansnyder/.rvm/gems/[email protected]/gems/rake-10.0.3/lib/rake/rake_test_loader.rb:10:in `block (2 levels) in <main>' 
    from /Users/ryansnyder/.rvm/gems/[email protected]/gems/rake-10.0.3/lib/rake/rake_test_loader.rb:9:in `each' 
    from /Users/ryansnyder/.rvm/gems/[email protected]/gems/rake-10.0.3/lib/rake/rake_test_loader.rb:9:in `block in <main>' 
    from /Users/ryansnyder/.rvm/gems/[email protected]/gems/rake-10.0.3/lib/rake/rake_test_loader.rb:4:in `select' 
    from /Users/ryansnyder/.rvm/gems/[email protected]/gems/rake-10.0.3/lib/rake/rake_test_loader.rb:4:in `<main>' 
Errors running test:functionals! 

编辑2: mondoid.yml

defaults: &defaults 
    host: localhost 
    # slaves: 
    # - host: slave1.local 
    #  port: 27018 
    # - host: slave2.local 
    #  port: 27019 

development: 
    <<: *defaults 
    database: alerstallings_development 

test: 
    <<: *defaults 
    database: alerstallings_test 

staging: 
    uri: <%= ENV['MONGOHQ_URL'] %> 

# set these environment variables on your prod server 
production: 
    uri: <%= ENV['MONGOHQ_URL'] %> 

任何帮助,将不胜感激。

+0

关于蒙戈错误,你有双重检查在'database.yml'的设置? – Jesper 2013-02-25 19:49:57

+0

我没有,我不知道从哪开始。就像我刚才提到的那是以前的开发者应用程序我假设他最初设置正确。 – rsnyder 2013-02-25 19:54:55

+0

development.yml中的设置在不同的计算机/开发人员之间有所不同。该设置可能对其他人有效,但可能对您无效。所以仔细检查它们。 – Jesper 2013-02-25 20:00:22

回答

0

你需要检查你找回的对象不是零。您应该添加一些错误处理并检查您的数据库是否正在返回适当的对象。速战速决将有条件地运行您的代码:

unless @chart.nil? 
    # Your previous code here 
end 
+1

我认为这个零错误是由于没有db存在的事实,所以这样做只会治疗症状,而不是疾病本身。 – Jesper 2013-02-25 20:23:25

+1

我完全同意。这只是一个快速修复。大多数情况下,您希望返回nil以进行正确的错误处理。 – erran 2013-02-25 20:24:57

+1

你们是对的。这完全是因为我的数据库是空的。所以我发现如何做一个mongodump和mongorestore。现在我的应用程序正在我的本地机器上运行。谢谢你的帮助! – rsnyder 2013-02-27 16:14:19