【问题标题】:Uninitialized constant Instagram v2未初始化的常量 Instagram v2
【发布时间】:2014-06-23 14:36:21
【问题描述】:

这个问题是Uninitialized constant Instagram 的副本,但有一些不同的细节(因为没有人真正回答最后一个问题)。我再次有一个使用 Instagram API 的网站。当我尝试运行rails server (当我刚刚添加instagram gem 时),我得到了这种错误:

NameError: uninitialized constant Instagram::Configuration::Faraday
/usr/local/rvm/gems/ruby-2.1.1/gems/instagram-1.0.0/lib/instagram/configuration.rb:29:in `<module:Configuration>'
/usr/local/rvm/gems/ruby-2.1.1/gems/instagram-1.0.0/lib/instagram/configuration.rb:6:in `<module:Instagram>'
/usr/local/rvm/gems/ruby-2.1.1/gems/instagram-1.0.0/lib/instagram/configuration.rb:4:in `<top (required)>'
/usr/local/rvm/gems/ruby-2.1.1/gems/instagram-1.0.0/lib/instagram.rb:2:in `require'
/usr/local/rvm/gems/ruby-2.1.1/gems/instagram-1.0.0/lib/instagram.rb:2:in `<top (required)>'
/usr/local/rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:76:in `require'
/usr/local/rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
/usr/local/rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:72:in `each'
/usr/local/rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:72:in `block in require'
/usr/local/rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:61:in `each'
/usr/local/rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:61:in `require'
/usr/local/rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler.rb:131:in `require'
/vagrant/Documents/RubyProjects/instagram_example/config/application.rb:14:in `<top (required)>'
/vagrant/Documents/RubyProjects/instagram_example/Rakefile:4:in `<top (required)>'

这与上一个问题完全不同,因为我在 gem 中遇到错误。我尝试使用 Instagram API 克隆 this example,但我得到了同样的错误。我的朋友试图运行这个例子,它对他有用。这是我的Gemfile

source 'https://rubygems.org'

gem 'rails', '4.1.1'
gem 'pg'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'therubyracer',  platforms: :ruby
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'

gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'spring',        group: :development
gem 'instagram'
gem 'dotenv-rails'

gem 'pry-rails', group: :development

到目前为止,这让我想到,我的 Ubuntu 14.04 运行不佳。

解决方案: 使用安装在主机上的 ruby​​,而不是安装在 vagrant 或其他虚拟机或虚拟盒子上。

【问题讨论】:

  • 您在编辑完 Gemfile 后还记得bundle install 吗?
  • 当然,我做到了。
  • 在上一篇文章中您写了show command contains * instagram (1.1.1)* ,但您的堆栈跟踪正在运行instagram-1.0.0 gem。运行gem list|grep instagram。是否安装了多个版本?
  • 是的,因为正如我在这里所说,我从上面链接中的 repo 克隆了这个项目并尝试对其进行测试。
  • 但是如果bundle show 说 1.1.1 并且堆栈跟踪说 1.0.0 您的项目目前运行的版本错误。它在捆绑程序上下文之外运行。您应该运行所有 gem 命令,例如带有 bundle exec 前缀的 rails 或通过生成的 binstubs

标签: ruby-on-rails ruby ruby-on-rails-4 instagram


【解决方案1】:

添加

gem "instagram", "~> 1.1.1"

到 Gemfile,然后:

  $ bundle install
  $ bundle exec rails c

然后在 Rails 控制台类型上

 Instagram

它应该总是返回类对象

编辑 1:

别忘了停止 spring 然后需要新的 gems 进入 rails 项目

$ bin/spring stop

【讨论】:

  • rails 控制台打不开报错还是一样vagrant@precise64:/vagrant/Documents/RubyProjects/instagram_example$ bundle exec rails c /usr/local/rvm/gems/ruby-2.1.1/gems/instagram-1.1.1/lib/instagram/configuration.rb:30:in ``&lt;module:Configuration&gt;': uninitialized constant Instagram::Configuration::Faraday (NameError)
  • wtf?克隆了示例项目。做了步骤。像魅力一样工作
  • vagrant@precise64:/vagrant/Documents/RubyProjects/instagram_example$ bundle show * instagram (1.1.1)
  • 唯一的区别是,我使用的是 Mac。也许与您的 vagrant vm 设置有关。你是什​​么主机操作系统?试试没有流浪汉
  • 检查了示例项目的 bin 文件夹。它正在使用弹簧箱。请参阅 bin/rails.rb,它需要弹簧。我想就是这样。只需运行 bin/spring stop ,然后运行 ​​bin/rails c
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多