Некоторые приложения на моем сервере, использующие Ruby и Ruby On Rails , похоже, перестали работать.Или хотя бы частично так.Мне удалось заставить веб-интерфейс рассматриваемого приложения снова начать функционировать, переустановив другую часть Ruby.Но больше всего я сломал кое-что еще в процессе.
Мне удалось отследить это с помощью некоторых тестов, и кажется, что Etc каким-то образом не обнаруживается программой при запуске.
Я протестировал
ruby -e 'puts Etc.getpwnam("apache").uid'
и получил
Неинициализированная константа и т. Д.
Если я тестировал вместо
ruby -r etc -e 'puts Etc.getpwnam("apache").uid'
Я получил правильный ответ
48
Он работает на сервере Amahi6 (работает Fedora Core 14 64bit ).
Пример кода, о котором идет речь, в реальном приложении, которое дает сбой:
#!/usr/bin/env ruby
# Amahi Home Server
# Copyright (C) 2007-2010 Amahi
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License v3
# (29 June 2007), as published in the COPYING file.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# file COPYING for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Amahi
# team at http://www.amahi.org/ under "Contact Us."
require File.dirname(__FILE__) + '/../config/boot'
#require 'commands/runner'
require 'optparse'
# switch to apache:users first
uid = Etc.getpwnam("apache").uid
gid = Etc.getgrnam("users").gid
Process.gid = gid
Process.egid = gid
Process.uid = uid
Process.euid = uid
...
, сбой при той же самой неинициализированной
Etc
Пояснение: Я НЕ менял этот код вообще, и он работал в своем текущем состоянии до
Что могло быть, что я напутал?:)
ОБНОВЛЕНИЕ: установлена Ruby версии 1.8.7
ОБНОВЛЕНИЕ 2:
Если я пытаюсь вручную добавить , требуется для rubygems и и т. Д. не удается, но жалуется на другой пакет.Поэтому я думаю, что с ядром моего ruby что-то в корне запутано.
/ usr / lib64 / ruby / gems / 1.8 / gems / activesupport-2.3.4 / lib / active_support / dependencies.rb: 55: неинициализированная константа ActiveSupport :: Dependencies :: Mutex (NameError) из /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in gem_original_require'
from
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in
require 'из / usr / lib64 / ruby /gems / 1.8 / gems / activesupport-2.3.4 / lib / active_support.rb: 56 из /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in gem_original_require'
from
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in
require 'из / usr / lib64/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record.rb:25 из /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in gem_original_require'
from
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in
require 'from /var / hda / platform / html / script / install-app: 70