RoRDevToolkit

Przy odpaleniu ubuntu.sh (na Debianie) dosteję:

/usr/lib/ruby/1.8/rubygems.rb:578:in `report_activate_error': Could not find RubyGem builder (>= 0) (Gem::LoadError) from /usr/lib/ruby/1.8/rubygems.rb:134:in `activate' from /usr/lib/ruby/1.8/rubygems.rb:158:in `activate' from /usr/lib/ruby/1.8/rubygems.rb:157:in `each' from /usr/lib/ruby/1.8/rubygems.rb:157:in `activate' from /usr/lib/ruby/1.8/rubygems.rb:49:in `gem' from /var/lib/gems/1.8/bin/update_rubygems:18
Wszystko pięknie działa, ale dobrze byłoby to rozwiązać :slight_smile:

BTW: zrobiłem forka na githubie

Teraz zrobiłem “duży skok” - rake meta:development_studio:install (instaluję na Debianie Lenny).

Pojawiło się trochę błędów:

  1. przy rubygems-update - to samo co post wyżej

  2. przy instalacji mogrela - niespodzianka - brak make

  3. przy tworzeniu dokumentacji do buildera:

ERROR: While generating documentation for builder-2.1.2 ... MESSAGE: Unhandled special: Special: type=17, text="<!-- HI -->" ... RDOC args: --ri --op /var/lib/gems/1.8/doc/builder-2.1.2/ri --title Builder -- Easy XML Building --main README --line-numbers --quiet lib CHANGES Rakefile README doc/releases/builder-1.2.4.rdoc doc/releases/builder-2.0.0.rdoc doc/releases/builder-2.1.1.rdoc (continuing with the rest of the installation)
Ale to chyba problem buildera, a nie Twojego instalatora

  1. ruby-debug - to samo co przy mongralu :slight_smile:

  2. Przy instalacji postgresa:
    a) nie mógł połączyć się z serwerem
    b) po “** Patching” nastąpiła zwieszka, a po komunikat:

chown: missing operand after `postgres:postgres' Try `chown --help' for more information
6. pg i ruby-pg - to samo co przy Mongrelu

Postaram się zatem poprawić te problemy i wrzucić do swojego repo. Jak z czymś będzie jeszcze problem, to dam znać.

Ad. 2, 4, 6 - pozwoliłem sobie dodać make-a do skryptu ubuntu.sh - nie zaszkodzi, a może pomóc (w ten sposób unikniemy tworzenia dwóch niemal identycznych skryptów instalacyjnych dla debiana i ubuntu). Można by również wykombinować coś takiego jak konfiguracja “prerekwizytów” (gdzie byłby make, ruby, etc.) ale trochę z tym za dużo zamieszania.

Z innej beczki - widzę, że do kolorowania używasz sekwencji bezpośrednio w stringach. Mam zamiar dorzucić dependency do mojego gem-a - apohllo-colors, który dodaje do Stringa metodę “hl”, robiącą dokłądnie to samo, ale ładniej :slight_smile: http://github.com/apohllo/colors

Ad. 2 - po instalacji make, Mongrel poszedł, choć było trochę warningów.
Ad. 4 - j.w.
Ad. 6 - j.w.

Testy na lenny miałem dopiero zacząć.

Najlepiej by było dodać trzecia dystrybucję DEBIAN. Zlokalizować jakieś pliki charakterystycnze dla debiana (nie isttniejace w czystej instalacji ubuntu) i rzeczy specyficnze dla debiana robić pod debiana.

W ubuntu.sh można dorzucić build-essential do instalacji. Nie wiem cyz jest w debianie taki pakiet.

[quote]5. Przy instalacji postgresa:
a) nie mógł połączyć się z serwerem[/quote]
No to chyba wina repozytoriów?

Zawsze możesz powtórzyć instalację modułu. Nie powinno szkodzić.
I co do podpunktu b). Całkiem logiczne, ze chown nie wyszedł (patchownaie też) skoro pakiety postgresa si enie zainstalowały. Musze dodać sprawdznie wyjścia (exit_code) aplikacji i przerywać skrypt w razie błędu.

Ad 3: tak, to problem gemu.

Zobaczę co z tym rubygems. Może coś się zmieniło, albo po prostu też wina braku polecenia make.

EDIT:

ubuntu.sh ma za zadanie właśnie instalować prerekwizyty, jak to ująłeś, w sposób specyficzny dla ubuntu.
Dalej już są zadania rake i wsyzskto mozna zamknąć w zadaniach rake’a.
Swoją drogą taki build-essential może być (w odpowieni sposób) instalowany przez moduł rordevtoolkita. Wystarczy napisac receptę (mozna wykorzystac packages.yml)

W Debianie wystarczy:

apt-get install make

[quote]5. Przy instalacji postgresa:
a) nie mógł połączyć się z serwerem

No to chyba wina repozytoriów?

Zawsze możesz powtórzyć instalację modułu. Nie powinno szkodzić.
I co do podpunktu b). Całkiem logiczne, ze chown nie wyszedł (patchownaie też) skoro pakiety postgresa si enie zainstalowały.[/quote]
No nie do końca - bo postgres się zainstalował, tylko chyba (automagicznie) nie uruchomił się serwer, jak mniemam (nie przyglądałem się dokładnie). Można by sprawdzić, czy serwer chodzi i ewentualnie go postawić przez /etc/init.d/…

EDIT

Widzę, że dla Fedory serwer jest stawiany, zatem zrobię to samo dla debiana (tyle, ze innymi poleceniami). Ale faktycznie trzeba najpierw znaleźć metodę jego wykrywania.

Mimo wsyzskto spróbowałbym wydzielić trzecią dystrybucję, debian. Różnic w przyszłości może być o wiele więcej. Nazwy pakietów sie moga nawet różnić (po to jest packages.yml). Z tego co wiem to ze ściezkami do binarek do gemów też jest chyba inaczej.

Poza tym debian DOMYŚLNIE nie ma sudo.

Niepokoją mnie te warningi o których mówiłes.

W debianie wystarcza apt-get install make, a w ubuntu nie trzeba nic. Sa już różnice. Wydzieliłbym zadanie.
Właśnie poszedł push z propozycją.

Żeby była jasność - chodziło mi tylko o skrypt instalacyjny. Jeśli wydzielimy prerekwizyty, to można tam wrzucić rozróżnienie na Debian/Ubuntu. Na poziomie pakietów i innych skryptów jestem jak najbardziej za. Na razie jednak nie wiem, jak odróżnić te systemy od siebie :confused:

EDIT

Może przez /etc/apt/sources.list ? Wiem, że w debianie standardowo są inne repozytoria niż w ubuntu.

W debianie pierwsze repo to:

deb http://ftp.pl.debian.org/debian/

A w Ubuntu?

[code]Installing ri documentation for fastthread-1.0.7…

No definition for dummy_dump

No definition for dummy_dump

No definition for rb_queue_marshal_load

No definition for rb_queue_marshal_dump

No definition for dummy_dump

No definition for dummy_dump

No definition for rb_queue_marshal_load

No definition for rb_queue_marshal_dump[/code]
Tylko przy generowaniu dokumentacji.

a to ok :slight_smile:

btw: merdżnąlem Twoje zmiany (na próbę).

Musimy znaleźć sposób odróżnienia ubuntu od debiana (fajnie by było gdyby za pomocą plików - jak nie da sie, to dopiszę sprawdzanie zawartości plików). Musze zainstalowac debiana na VM :wink:

Z tym postgresem pod Debianem są jakieś jaja :confused:
Nie kopiuje pliku konfiguracyjnego, a jak już go ręcznie skopiuję, to serwer “prawie-wstaje”:

Starting PostgreSQL 8.3 database server:.

i tyle.
Jak próbuję przez psql się połączyć to lipa. Debina sucks :confused:

Na swoim kompie mam Gentoo, które śmiga jak ta lala. Niestety w pracowniach ma być Debina…

Odnośnie DBMS - przydałby się jeszcze Sqlite3 oraz MySQL. Wiem, że ten ostatni jest w odwrocie, ale mimo wszystko ciągle jest b. popularny.

Chyba nie skończy się na make-u :confused:

Nie wiem, czy to wynika z wymagań najnowszych railsów, albo z specyfiki Debiana, ale uruchominie komendy “rails” okupione jest wcześniejszą litanią, pt:

gem install test-spec gem install camping apt-get install libapache2-mod-fastcgi apt-get install libfcgi-dev gem install fcgi gem install memcache-client gem install ruby-openid -v 2.0.4 apt-get install g++ gem install thin
(moduł dla apacza jest chyba opcjonalny, ale skoro instaluję libfcgi, to już robię z niej jakiś użytek).

Po kiego grzyba żeby uruchomić railsy, muszę mieć zainstalowane “camping”, “thin”, etc. etc.???

EDIT:

A to już są kompletne jaja:

$ ./script/server Rails requires RubyGems >= 1.3.2 (you have 1.2.0). Please `gem update --system` and try again. $ gem -v 1.2.0 $ gem update --system ERROR: While executing gem ... (RuntimeError) gem update --system is disabled on Debian. RubyGems can be updated using the official Debian repositories by aptitude or apt-get. $ apt-get install rubygems Reading package lists... Done Building dependency tree Reading state information... Done rubygems is already the newest version.
No tak powoli składa się to do kupy. Wcześniej przecież był błąd z update_rubygems. Zatem próbowałem dalej:

$ update_rubygems ... error $ gem install session $ gem install hoe-seattlerb $ gem install hoe ERROR: Error installing hoe: hoe requires RubyGems version >= 1.3.1
LOL - cykliczna zależność między wersjami - przynajmniej na Debianie:

  1. update_rubygems -> hoe
  2. hoe -> gem 1.3.1

Ma ktoś jakiś pomysł (rzecz jasna mogę zainstalować z źródeł rubygems, ale sorry, w którym wieku my żyjemy).

EDIT

Będzie zabawa ze zmianami wersji :)))

$ gem uninstall rubygems-update $ gem install rubygems-update -v 1.3.1 $ update_rubygems $ gem install hoe -v 2.0.0 $ gem install rubygems-update $ update_rubygems $ gem install hoe
O dziwo - działa. Ale nie mam wszystkich wcześniejszych gemów :confused:

Na Debianie tego nie obejdziesz. Rubygems z repo nie chce się update’ować. Trzeba albo ręcznie ze źródeł, albo dodać repozytoria squeeza gdzie jest chyba 1.3.4.
Ze dwa tygodnie temu instalowałem rails/apache/passenger na debianie i Thina nie instalowałem, a wszystko działa.

PS.
W repozytoriach lenny’ego też chyba jest 1.3.4

PS2
Będę dzisiaj instalował debiana na lapku to mogę pozapisywać co instaluję.

PS2 Będę dzisiaj instalował debiana na lapku to mogę pozapisywać co instaluję.
Koniecznie wypróbuje skrypt sevosa z moimi poprawkami (dodam niebawem).

Ok, teraz odpaliłem jeszcze raz:

rake meta:devel_studio:install

i odpaliłem railsy bez żadnego problemu. Nie wiem czemu wcześniej pluł się o te gemy (których teraz nie ma!!!). W każdym razie jeden problem z głowy.

EDIT

Przetestowałem też moją konfigurację sqlite3 - i działa! Wrzucam na githuba, chociaż na razie skonfigurowane jest tylko dla profilu Debian, który NIE JEST UŻYWANY!

Hm, zaczynam się zastanawiac czy nie usunąć autowykrywania dystrybucji i czy nie wymagać podania jej w zmiennej środowiskowej, bądź pliku konfiguracyjnym. Tak samo czy używać su czy sudo. Używanie sudo nie wymusza ciągłego wpisywania hasła administratora…
Problem się robi zbyt skomplikowany chyba.

Zmienną środowiskową mógłby ustawiać skrypt inicjujący (debian.sh, ubuntu.sh, fedora.sh) on też by instalował ruby’ego i uruchamiał kilka pierwszych tasków (instalacja make’a, update rubygems etc).

A propos sudo nie jest przez wszystkich wykorzystywane. To jest domyślne narzędzie w ubuntu, ale już nie w debianie, gdzie raczej korzysta się z su. Może po prostu zrobić koniecznym uruchamianie programu z poziomu roota?

Może coś w tym stylu:
config/distributions.yml

[code]fedora:
filename: /etc/issue
content: !ruby/regexp “/Fedora/”

ubuntu:
filename: /etc/issue
content: !ruby/regexp “/Ubuntu/”

debian:
filename: /etc/issue
content: !ruby/regexp “/Debian/”[/code]
lib/helpers.rb

[code]require “yaml”

PACKAGES = YAML.load_file(‘config/packages.yml’)
DISTRIBUTIONS = YAML.load_file(‘config/distributions.yml’)

@@distribution = nil

def distribution
if not @@distribution
DISTRIBUTIONS.each do |dist, options|
filename = File.open(options[‘filename’], ‘r’)
@@distribution = dist if options[‘content’] =~ filename.gets
end
end
@@distribution
end

[…][/code]
Nie wiem na ile /etc/issue jest standardem, bo można by chyba distro rozpoznawać bezpośrednio czytając ten plik (bez configuracyjnego yamla)?

[quote=RawOnRails][code]fedora:
filename: /etc/issue
content: !ruby/regexp “/Fedora/”

ubuntu:
filename: /etc/issue
content: !ruby/regexp “/Ubuntu/”

debian:
filename: /etc/issue
content: !ruby/regexp “/Debian/”[/code]
[/quote]
Yuk :stuck_out_tongue:

A nie lepiej tak:

$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu karmic (development branch) Release: 9.10 Codename: karmic
albo jakoś cat /etc/*release – też może zadziałać.

/etc/issue może być zmodyfikowany przez administratora systemu w celu wyświetlenia jakiejś informacji dla logujących się użytkowników. Wcale tam nie musi być nazwy czy wersji dystrybucji.