Руби разделить большие исходные файлы на несколько файлов - PullRequest
3 голосов
/ 15 августа 2011

Я пишу скрипт на Ruby, который должен был быть небольшим, но вырос довольно большим, вплоть до большого, чтобы все было собрано в один исходный файл.Поэтому я пытаюсь разделить проект на разные файлы.У меня есть четыре класса, и я хочу поместить каждый в свой отдельный исходный файл.

Что я сделал:

Я переместил все классы в их собственные файлы, так что теперь у меня есть

proj/GoogleChart.rb
proj/BarChart.rb
proj/PieChart.rb
proj/GroupedBarChart.rb

Теперь, когда онив других файлах я получаю uninitialized constant GoogleChart (NameError) во всех моих подклассах на линии, где я наследую от GoogleChart, т.е.

require 'GoogleChart'
BarChart < GoogleChart

Может кто-нибудь сказать мне, что не так?

Спасибо

РЕДАКТИРОВАТЬ

Использование ruby ​​версии 1.8.4

Также я попытался использовать абсолютный путь:

require 'C:/Documents and Settings/proj/GoogleChart.rb', и этовсе еще производит NameError

1 Ответ

1 голос
/ 15 августа 2011

В Ruby 1.8.x . является частью вашего пути загрузки.Поэтому вы должны хотя бы попытаться отладить это, добавив что-то вроде:

puts $:
require 'GoogleChart'
class BarChart < GoogleChart
end

и загрузить его в сеанс IRB:

  1. Откройте сеанс в вашем каталоге proj.
  2. Введите там require 'BarChart'
  3. Посмотрите на результат.

Для меня это:

c:\apps\ruby\test\proj>irb
irb(main):001:0> require 'BarChart'
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/site_ruby/1.8
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/site_ruby/1.8/i386-msvcrt
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/site_ruby
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/vendor_ruby/1.8
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/vendor_ruby/1.8/i386-msvcrt
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/vendor_ruby
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/1.8
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/1.8/i386-mingw32
.
=> true

Итак, требование успешнодля меня и . это часть пути (как и положено).Как вы можете видеть, я работаю с Ruby 1.8.7, я не знаю, изменилось ли что-нибудь, начиная с 1.8.4, что здесь уместно.

Поэтому, пожалуйста, опишите, как именно вы запускаете файл:

  • Открыли ли вы оболочку для запуска файла?
  • Каков текущий рабочий каталог этой оболочки?
  • Запускаете ли вы, дважды щелкнув по нему?

Работает только тогда, когда вы находитесь в каталоге proj и работаете там (с ruby ​​в пути к вашей оболочке) ruby BarChart.rb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...