继续“在乘客中找不到乘客(> = 0)

时间:2012-09-21 22:23:16

标签: ruby gem passenger

我已经调试了一天以上,没有运气,

安装红宝石,宝石和乘客之后,我试图启动乘客,但我一直得到“找不到乘客”:

passenger@dragon:/usr/website/myapp/current$ passenger start -p 4000 -e production -d
/home/passenger/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find passenger (>= 0) amongst [actionmailer-3.2.8, actionmailer-3.2.3, actionpack-3.2.8, actionpack-3.2.3, activemodel-3.2.8, activemodel-3.2.3, activerecord-3.2.8, activerecord-3.2.3, activeresource-3.2.8, activeresource-3.2.3, activesupport-3.2.8, activesupport-3.2.3, arel-3.0.2, bcrypt-ruby-3.0.1, builder-3.0.3, builder-3.0.0, cape-1.4.0, capistrano-2.13.4, coffee-rails-3.2.2, coffee-script-2.2.0, coffee-script-source-1.3.3, devise-2.1.2, devise_ldap_authenticatable-0.6.1, erubis-2.7.0, execjs-1.4.0, guess_html_encoding-0.0.4, high_voltage-1.1.1, highline-1.6.15, hike-1.2.1, i18n-0.6.1, i18n-0.6.0, journey-1.0.4, jquery-rails-2.0.2, jruby-pageant-1.1.1, jsmin-1.0.1, json-1.7.3, libv8-3.3.10.4-x86-linux, mail-2.4.4, mime-types-1.19, mini_magick-3.4, multi_json-1.3.6, net-ldap-0.2.2, net-scp-1.0.4, net-sftp-2.0.5, net-ssh-2.6.0, net-ssh-gateway-1.1.0, nokogiri-1.5.5, orm_adapter-0.4.0, polyglot-0.3.3, rack-1.4.1, rack-cache-1.2, rack-ssl-1.3.2, rack-test-0.6.1, rails-3.2.8, rails-3.2.3, rails-settings-cached-0.2.1, railties-3.2.8, railties-3.2.3, rake-0.9.2.2, rdoc-3.12, ruby-readability-0.5.4, rvm-capistrano-1.2.7, sass-3.1.20, sass-rails-3.2.5, sprockets-2.1.3, sqlite3-1.3.6, subexec-0.2.2, swfobject-rails-1.1.1, therubyracer-0.10.1, thor-0.16.0, thor-0.14.6, tilt-1.3.3, treetop-1.4.10, tzinfo-0.3.33, uglifier-1.2.5, warden-1.2.1] (Gem::LoadError)
        from /home/passenger/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
        from /home/passenger/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
        from /home/passenger/.rvm/gems/ruby-1.9.3-p194/bin/passenger:18:in `<main>'
        from /home/passenger/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `eval'
        from /home/passenger/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `<main>'

安装Passenger gem时(我使用gem install passenger安装它),如您所见:

passenger@dragon:/usr/website/myapp/current$ gem list

*** LOCAL GEMS ***

actionmailer (3.2.3)
actionpack (3.2.3)
activemodel (3.2.3)
activerecord (3.2.3)
activeresource (3.2.3)
activesupport (3.2.3)
arel (3.0.2)
bcrypt-ruby (3.0.1)
builder (3.0.0)
bundler (1.2.1)
cape (1.4.0)
capistrano (2.13.4)
coffee-rails (3.2.2)
coffee-script (2.2.0)
coffee-script-source (1.3.3)
daemon_controller (1.0.0)
devise (2.1.2)
devise_ldap_authenticatable (0.6.1)
erubis (2.7.0)
execjs (1.4.0)
fastthread (1.0.7)
file-tail (1.0.11)
guess_html_encoding (0.0.4)
high_voltage (1.1.1)
highline (1.6.15)
hike (1.2.1)
i18n (0.6.0)
journey (1.0.4)
jquery-rails (2.0.2)
jruby-pageant (1.1.1)
jsmin (1.0.1)
json (1.7.3)
libv8 (3.3.10.4 x86-linux)
mail (2.4.4)
mime-types (1.19)
mini_magick (3.4)
multi_json (1.3.6)
net-ldap (0.2.2)
net-scp (1.0.4)
net-sftp (2.0.5)
net-ssh (2.6.0)
net-ssh-gateway (1.1.0)
nokogiri (1.5.5)
orm_adapter (0.4.0)
passenger (3.0.17)
polyglot (0.3.3)
rack (1.4.1)
rack-cache (1.2)
rack-ssl (1.3.2)
rack-test (0.6.1)
rails (3.2.3)
rails-settings-cached (0.2.1)
railties (3.2.3)
rake (0.9.2.2)
rdoc (3.12)
ruby-readability (0.5.4)
rubygems-bundler (1.1.0)
rvm (1.11.3.5)
rvm-capistrano (1.2.7)
sass (3.1.20)
sass-rails (3.2.5)
sprockets (2.1.3)
sqlite3 (1.3.6)
subexec (0.2.2)
swfobject-rails (1.1.1)
therubyracer (0.10.1)
thor (0.14.6)
tilt (1.3.3)
tins (0.5.5)
treetop (1.4.10)
tzinfo (0.3.33)
uglifier (1.2.5)
warden (1.2.1)

这是我的宝石环境:

passenger@dragon:/usr/website/myapp/current$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.24
  - RUBY VERSION: 1.9.3 (2012-04-20 patchlevel 194) [i686-linux]
  - INSTALLATION DIRECTORY: /home/passenger/.rvm/gems/ruby-1.9.3-p194
  - RUBY EXECUTABLE: /home/passenger/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
  - EXECUTABLE DIRECTORY: /home/passenger/.rvm/gems/ruby-1.9.3-p194/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/passenger/.rvm/gems/ruby-1.9.3-p194
     - /home/passenger/.rvm/gems/ruby-1.9.3-p194@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

这是rvm信息:

passenger@dragon:/usr/website/myapp/current$ rvm info

ruby-1.9.3-p194:

  system:
    uname:       "Linux dragon 3.2.0-26-generic-pae #41-Ubuntu SMP Thu Jun 14 16:45:14 UTC 2012 i686 i686 i386 GNU/Linux"
    bash:        "/bin/bash => GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)"
    zsh:         " => not installed"

  rvm:
    version:      "rvm 1.15.9 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]"
    updated:      "2 days 23 hours 20 minutes 14 seconds ago"

  ruby:
    interpreter:  "ruby"
    version:      "1.9.3p194"
    date:         "2012-04-20"
    platform:     "i686-linux"
    patchlevel:   "2012-04-20 revision 35410"
    full_version: "ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]"

  homes:
    gem:          "/home/passenger/.rvm/gems/ruby-1.9.3-p194"
    ruby:         "/home/passenger/.rvm/rubies/ruby-1.9.3-p194"

  binaries:
    ruby:         "/home/passenger/.rvm/rubies/ruby-1.9.3-p194/bin/ruby"
    irb:          "/home/passenger/.rvm/rubies/ruby-1.9.3-p194/bin/irb"
    gem:          "/home/passenger/.rvm/rubies/ruby-1.9.3-p194/bin/gem"
    rake:         "/home/passenger/.rvm/gems/ruby-1.9.3-p194@global/bin/rake"

  environment:
    PATH:         "/home/passenger/.rvm/gems/ruby-1.9.3-p194/bin:/home/passenger/.rvm/gems/ruby-1.9.3-p194@global/bin:/home/passenger/.rvm/rubies/ruby-1.9.3-p194/bin:/home/passenger/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
    GEM_HOME:     "/home/passenger/.rvm/gems/ruby-1.9.3-p194"
    GEM_PATH:     "/home/passenger/.rvm/gems/ruby-1.9.3-p194:/home/passenger/.rvm/gems/ruby-1.9.3-p194@global"
    MY_RUBY_HOME: "/home/passenger/.rvm/rubies/ruby-1.9.3-p194"
    IRBRC:        "/home/passenger/.rvm/rubies/ruby-1.9.3-p194/.irbrc"
    RUBYOPT:      ""
    gemset:       ""

以下是抛出错误的方法(第247行):

  1 require "rubygems/requirement"
  2
  3 ##
  4 # The Dependency class holds a Gem name and a Gem::Requirement.
  5
  6 class Gem::Dependency
  7
  8   ##
  9   # Valid dependency types.
 10   #--
 11   # When this list is updated, be sure to change
 12   # Gem::Specification::CURRENT_SPECIFICATION_VERSION as well.
 13
 14   TYPES = [
 15            :development,
 16            :runtime,
 17           ]
 18
 19   ##
 20   # Dependency name or regular expression.
 21
 22   attr_accessor :name
 23
 24   ##
 25   # Allows you to force this dependency to be a prerelease.
 26
 27   attr_writer :prerelease
 28
 29   ##
 30   # Constructs a dependency with +name+ and +requirements+. The last
 31   # argument can optionally be the dependency type, which defaults to
 32   # <tt>:runtime</tt>.
 33
 34   def initialize name, *requirements
 35     if Regexp === name then
 36       msg = ["NOTE: Dependency.new w/ a regexp is deprecated.",
 37              "Dependency.new called from #{Gem.location_of_caller.join(":")}"]
 38       warn msg.join("\n") unless Gem::Deprecate.skip
 39     end
 40
 41     type         = Symbol === requirements.last ? requirements.pop : :runtime
 42     requirements = requirements.first if 1 == requirements.length # unpack
 43
 44     unless TYPES.include? type
 45       raise ArgumentError, "Valid types are #{TYPES.inspect}, "
 46         + "not #{type.inspect}"
 47     end
 48
 49     @name        = name
 50     @requirement = Gem::Requirement.create requirements
 51     @type        = type
 52     @prerelease  = false
 53
 54     # This is for Marshal backwards compatibility. See the comments in
 55     # +requirement+ for the dirty details.
 56
 57     @version_requirements = @requirement
 58   end
 59
 60   ##
 61   # A dependency's hash is the XOR of the hashes of +name+, +type+,
 62   # and +requirement+.
 63
 64   def hash # :nodoc:
 65     name.hash ^ type.hash ^ requirement.hash
 66   end
 67
 68   def inspect # :nodoc:
 69     "<%s type=%p name=%p requirements=%p>" %
 70       [self.class, self.type, self.name, requirement.to_s]
 71   end
 72
 73   ##
 74   # Does this dependency require a prerelease?
 75
 76   def prerelease?
 77     @prerelease || requirement.prerelease?
 78   end
 79
 80   def pretty_print q # :nodoc:
 81     q.group 1, 'Gem::Dependency.new(', ')' do
 82       q.pp name
 83       q.text ','
 84       q.breakable
 85
 86       q.pp requirement
 87
 88       q.text ','
 89       q.breakable
 90
 91       q.pp type
 92     end
 93   end
 94
 95   ##
 96   # What does this dependency require?
 97
 98   def requirement
 99     return @requirement if defined?(@requirement) and @requirement
100
101     # @version_requirements and @version_requirement are legacy ivar
102     # names, and supported here because older gems need to keep
103     # working and Dependency doesn't implement marshal_dump and
104     # marshal_load. In a happier world, this would be an
105     # attr_accessor. The horrifying instance_variable_get you see
106     # below is also the legacy of some old restructurings.
107     #
108     # Note also that because of backwards compatibility (loading new
109     # gems in an old RubyGems installation), we can't add explicit
110     # marshaling to this class until we want to make a big
111     # break. Maybe 2.0.
112     #
113     # Children, define explicit marshal and unmarshal behavior for
114     # public classes. Marshal formats are part of your public API.
115
116     if defined?(@version_requirement) && @version_requirement
117       version = @version_requirement.instance_variable_get :@version
118       @version_requirement  = nil
119       @version_requirements = Gem::Requirement.new version
120     end
121
122     @requirement = @version_requirements if defined?(@version_requirements)
123   end
124
125   def requirements_list
126     requirement.as_list
127   end
128
129   def to_s # :nodoc:
130     if type != :runtime then
131       "#{name} (#{requirement}, #{type})"
132     else
133       "#{name} (#{requirement})"
134     end
135   end
136
137   ##
138   # Dependency type.
139
140   def type
141     @type ||= :runtime
142   end
143
144   def == other # :nodoc:
145     Gem::Dependency === other &&
146       self.name        == other.name &&
147       self.type        == other.type &&
148       self.requirement == other.requirement
149   end
150
151   ##
152   # Dependencies are ordered by name.
153
154   def <=> other
155     self.name <=> other.name
156   end
157
158   ##
159   # Uses this dependency as a pattern to compare to +other+. This
160   # dependency will match if the name matches the other's name, and
161   # other has only an equal version requirement that satisfies this
162   # dependency.
163
164   def =~ other
165     unless Gem::Dependency === other
166       return unless other.respond_to?(:name) && other.respond_to?(:version)
167       other = Gem::Dependency.new other.name, other.version
168     end
169
170     return false unless name === other.name
171
172     reqs = other.requirement.requirements
173
174     return false unless reqs.length == 1
175     return false unless reqs.first.first == '='
176
177     version = reqs.first.last
178
179     requirement.satisfied_by? version
180   end
181
182   def match? name, version
183     return false unless self.name === name
184     return true if requirement.none?
185
186     requirement.satisfied_by? Gem::Version.new(version)
187   end
188
189   def matches_spec? spec
190     return false unless name === spec.name
191     return true  if requirement.none?
192
193     requirement.satisfied_by?(spec.version)
194   end
195
196   ##
197   # Merges the requirements of +other+ into this dependency
198
199   def merge other
200     unless name == other.name then
201       raise ArgumentError,
202             "#{self} and #{other} have different names"
203     end
204
205     default = Gem::Requirement.default
206     self_req  = self.requirement
207     other_req = other.requirement
208
209     return self.class.new name, self_req  if other_req == default
210     return self.class.new name, other_req if self_req  == default
211
212     self.class.new name, self_req.as_list.concat(other_req.as_list)
213   end
214
215   def matching_specs platform_only = false
216     matches = Gem::Specification.find_all { |spec|
217       self.name === spec.name and # TODO: == instead of ===
218         requirement.satisfied_by? spec.version
219     }
220
221     if platform_only
222       matches.reject! { |spec|
223         not Gem::Platform.match spec.platform
224       }
225     end
226
227     matches = matches.sort_by { |s| s.sort_obj } # HACK: shouldn't be needed
228   end
229
230   ##
231   # True if the dependency will not always match the latest version.
232
233   def specific?
234     @requirement.specific?
235   end
236
237   def to_specs
238     matches = matching_specs true
239
240     # TODO: check Gem.activated_spec[self.name] in case matches falls outside
241
242     if matches.empty? then
243       specs = Gem::Specification.all_names.join ", "
244       error = Gem::LoadError.new "Could not find #{name} (#{requirement}) amongst [#{specs}]"
245       error.name        = self.name
246       error.requirement = self.requirement
247       raise error
248     end
249
250     # TODO: any other resolver validations should go here
251
252     matches
253   end
254
255   def to_spec
256     matches = self.to_specs
257
258     matches.find { |spec| spec.activated? } or matches.last
259   end
260 end

1 个答案:

答案 0 :(得分:3)

您确定乘客在您的Gemfile中吗?我看到你安装了bundler,我认为这与你的堆栈跟踪中的ruby_noexec_wrapper有关。