Poległem na podstawach

Tworzę serwis, gdzie część będzie działać jako serwis www a część jako aplikacja konsolowa. Ponieważ obie części mają jednakowe metody to chciałbym je umieścić w osobnym module i później includować. Niby prosta sprawa ale rzecz w tym, że w momencie pisania aplikacji nie wiem gdzie ten moduł będzie się znajdował w systemie plikow.
Moduł obecnie wygląda tak

[code]require ‘rubygems’
require ‘ipaddress’
require ‘spamikaze_options’
require ‘spamikaze_config’

module Spamikaze
def search(ip)
(…)
end
(…)
end[/code]
W aplikacji/klasie wykonywana jest metoda setup, która miałaby do tej klasy dodać metody z modułu (tutaj WWW, w aplikacji konsolowej wygląda to nieco inaczej i klasa również nazywa się inaczej)

[code]require ‘rubygems’
require ‘ipaddress’
require ‘sinatra/base’
require ‘erb’

class Controler < Sinatra::Base

ROOT_DIR = File.join(File.dirname(FILE),’…’)
APP_DIR = File.join(ROOT_DIR,‘app’)

set :environment, (ENV[‘RACK_ENV’] ? ENV[‘RACK_ENV’].to_sym : :development)
set :root, ROOT_DIR
set :views, Proc.new {File.join(APP_DIR, ‘views’)}

disable :run

before { setup }
(…)
def setup
env = ENV[‘RACK_ENV’] || ‘development’

case env
when 'development'
  lib = File.expand_path(File.join(ROOT_DIR,'lib'))
  config = File.expand_path(File.join(ROOT_DIR,'config'))
when 'production'
  lib = '/usr/local/spamikaze/lib'
  config = '/usr/local/spamikaze/etc'
end

$LOAD_PATH << lib

require 'spamikaze_config'
require 'spamikaze'
include Spamikaze
(...)

end
end[/code]
Powyższe oczywiście nie działa. Podpowiedzcie jak to rozwiązać a jeszcze lepiej jakiś link, gdzie mógłbym o tym poczytać i zrozumieć. Niestety http://www.apohllo.pl/dydaktyka/ruby/intro/metaprogramowanie nie pomogło :frowning:

Już poradziłem sobie z tym problemem, wszystkim życzliwym dziękuję za pomoc.

Aktualne dane o projekcie można znaleźć na http://turox.org.pl/TBL

Pomijając szatę graficzną, dlaczego kod nie jest na githubie? Kurczę, github stał się dla mnie tym dla hostingu OpenSource, czym google dla wyszukiwania.

Z tego samego powodu co brak konta na nk, facebook-u, gmailu etc. Jeśli projekt rozwinie się w coś wartościowego to można będzie wrzucić na githuba, rubyforge itd.

Kiepski powód :wink: Tracisz szansę, że ktoś Ci wyśle patcha, a co zyskujesz? Że nikt przez przypadek nie zobaczy kodu? Jak projekt będzie na początku drogi i napiszesz w README, że jest w trakcie rozwijania i nie jest używalny, to i tak na niego mało kto spojrzy (pomijając osoby, które naprawdę są zainteresowane pomocą).

Dzięki za tak cenne rady ale akurat w tej kwestii pozostanę przy własnym rozwiązaniu.