Pytanie o stabilność

Witam,

od jakiegoś czasu uczę się Ruby on Rails i pomimo tego, że widzę jak ta platforma ułatwia pisanie aplikacji to jestem zmęczony ciągłą walką z konfiguracją środowiska. Niemal za każdym razem jak instaluje jakiś gem pojawiają się problemy, czegoś brakuje, coś nie działa i tak zamiast pisać swoją aplikację spędzam całe noce na tym żeby środowisko działało.

W związku z tym mam pytanie do bardziej zaawansowanych programistów. Jak stabilna jest ta platforma? Chodzi o to, że zaczynam projekt i obawiam się, że w przyszłości będę miał olbrzymie problemy z utrzymaniem środowiska w odpowiednim stanie, że przy każdej aktualizacji będzie masa problemów. Powiem szczerze, że na razie moje doświadczenia nie napawają mnie optymizmem. Przeszedłem kilka kursów online, obejrzałem 2 płyty filmów szkoleniowych i zamiast rozwijać aplikację to rzeźbię (nie powiem w czym) żeby środowisko działało.

Jednym z powodów dla których zainteresowałem się RoR było szybkie tworzenie aplikacji, używanie gemów itd, no ale co z tego jak prawie za każdym razem jak chcę użyć jakiegoś gema to czeka mnie kilka godzin żeby wszystko zaczęło działać. Powiem szczerze, że zaczynam być tym rozczarowany.

Czy Wy macie takie same problemy?

Pozdro

Nie używasz czasem Windowsa?

no właśnie nie, używałem na początku ale było to bardzo wolne rozwiązanie. Teraz VM z Debianem, ostatnio zacząłem używać rvm bo z pakietami były problemy, ale tutaj podobne doświadczenie. Prosty przykład, z racji że jestem zielony chciałem sobie ułatwić życie i skorzystać z http://railsapps.github.com/rails-composer/ i zamiast cieszyć się prostym i naprawdę fajnym rozwiązaniem walczę z instalacją therubyracer od wczoraj wieczora. Wcześniej uruchomiłem to na innej maszynie, gdzie działało, ale niestety okazało się że jak ją przerestartowałem to jest segmentation fault webrick się nie uruchamia. Chodzi o to, że co chwilę rozwiązuję problemy co odciąga mnie od głównego zajęcia i powoli zniechęca do tego rozwiązania a szkoda bo bardzo podoba mi się RoR. Najgorsze jest to, że jak wrzucę błąd w google to nie jestem odosobniony. Dlatego zapytałem o stabilność i sens tworzenia aplikacji w takim środowisku. W zaciszu domowym mogę sobie rzeźbić ale nie wyobrażam sobie jak na razie stawiania tego na produkcji, no chyba że będzie się pisało wszystko samemu bez korzystania z gemów no ale wtedy dla mnie platforma ta traci sens.

Sprawdź: gem install therubyracer -v “0.10.2”

To nie są problemy. RoR jest po prostu mocno zintegrowany i zależny od innych bibliotek systemowych (pliki nagłówkowe developerskie etc).
Domyślam się, że potykasz się głownie o brak bibliotek różnego rodzaju.
Masz tutaj zieloną szkołę, pytaj się, umieszczaj istotne fragmenty logów, pewnie znajdzie się porada.

ok. rozumiem że jest mocno zintegrowany, ale powiem szczerze, że dla mnie to jest jak powrót do czasów slackware bez zarządzania pakietami, instalowania ze źródeł etc. Myślałem, że to środowisko jest przyjaźniejsze - na filmach szkoleniowych było inaczej heheheheh.
w takim razie mam taki piękny błąd

[code]root@debian:/var/www# gem install therubyracer -v ‘0.11.0’
Building native extensions. This could take a while…
ERROR: Error installing therubyracer:
ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-1.9.3-p362/bin/ruby extconf.rb

checking for main() in -lpthread… yes
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
–with-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=/usr/local/rvm/rubies/ruby-1.9.3-p362/bin/ruby
–with-pthreadlib
–without-pthreadlib
–enable-debug
–disable-debug
/usr/local/rvm/gems/ruby-1.9.3-p362/gems/therubyracer-0.11.0/ext/v8/build.rb:50:in build_with_rubygem_libv8': undefined local variable or methodlibv8_include_flags’ for main:Object (NameError)
from extconf.rb:20:in `’

Gem files will remain installed in /usr/local/rvm/gems/ruby-1.9.3-p362/gems/therubyracer-0.11.0 for inspection.
Results logged to /usr/local/rvm/gems/ruby-1.9.3-p362/gems/therubyracer-0.11.0/ext/v8/gem_make.out
root@debian:/var/www#[/code]
potrzebuję rubyracer w wersji co najmniej 0.11.0

przeczytałem cały wątek https://github.com/cowboyd/therubyracer/issues/215 i nic stąd nie działa u mnie niestety. Różne wersje libv8 próbowałem i nic to nie dało zawsze są jakieś errory podobne do tych powyżej.

Zamiast tego gemu możesz zainstalowac node.js jeśli chcesz tylko JavaScript runtime. Powinno być prostsze.

właśnie próbuję zobaczymy jak wyjdzie, nie chciałem tego używać bo wolałem, żeby wszystko było w gemach, chodzi o to, że im więcej takich rozwiązań tym więcej problemów z administracją i utrzymaniem środowiska.

dzięki za pomoc, w razie co będę tu jeszcze pisał :).

To nie jest rozwiązanie. To obejście problemu.
Część gemów wymaga therubyracer i libv8. Np rails-less i developerka na jruby.

Teraz żałuję, że swój pierwszy post w tym wątku okroiłem, bo pierwotnie był 5x dłuższy i przyjmując pewne założenia tłumaczył “co i jak”.

Po pierwsze, witamy w świecie linuxa i środowiska programistów systemowych.
Pierwsze, co warto sobie przyswoić, to uważne czytanie logów i próba zrozumienia OCB.
Dokładna lektura tego co nam wkleiłeś - i już wiadomo, że nie jest to ten log co trzeba.
To tylko informacja, że build nie wypalił, i dokładniejsze informacje o tym, dlaczego, znajdziesz w pliku mkmf.log i gem_make.out.
Powinieneś otworzyć te pliki i szukać, prawdopodobnie gdzieś na końcu, wersu ze słowami “error” ,“no”, “failed”, “missing” - najczęściej offset 2 wersów od tej linii i wklejenie tego tutaj da nam możliwość zorientowania się “co i jak”.
(kurde, nigdy tam nie zaglądałem ciekawe co tam jest :wink: -> jako w miarę obyty z linuxem od razu wiedziałem, gdzie i co go boli)
Zawsze też warto dodać dokładną wersję systemu na którym pracujesz - wpisz w shellu polecenie “uname -a” i też dołącz nam wyświetlony wynik do tego co tu będziesz wklejał.
Istnieje wtedy szansa, że na dokładkę dostaniesz nie tylko odpowiedź czego brakuje, ale i podpowiedź co dokładnie trzeba zrobić, by zaradzić na to wszystko.

Teraz - dlaczego są takie “problemy”.
Ruby i RoR są raczej “on the edge” - wymagają środowiska w miarę nowego, tzn opartego o w miarę najnowsze biblioteki.
Debian nie jest taki. To środowisko zachowawcze, stabilne i sprawdzone, ale bez najnowszych wersji bibliotek i programów.
Czy to znaczy, że na nim się nie da? Oczywiście się da, ale wymaga często trochę bardziej zaawansowanej wiedzy na poziomie administratora systemu. Czasami trzeba przekompilować pakiet, czasami ściągnąć i zainstalować po poprzedniej kompilacji coś samodzielnie. Do niedawno tak instalowałem np. Node.js <- w Debianie nie było paczki.
Do nauki i developerki polecam Ubuntu. Nawet jeśli czegoś nie ma w “koszernych” repo (repozytoriach oficjalnych i pobłogosławionych przez Canonical), to Ubuntu ma świetną platformę “ppa” (Launchpad) gdzie znajdziesz chyba wszystko.

Następna porada - koniecznie zajrzyj na http://rvm.io i przeczytaj. Dokładnie. W skrócie -jest to system (zaawansowany skrypt) za pomocą którego będziesz mógł sobie instalować dowolną wersję Rubyiego, Railsów i gemów w domowym katalogu, bez śmiecenia po systemie, trzymającego w jednym katalogu odpowiednie wersje gemów, bezkonfliktowo. Co to są gemsety,jak je tworzyc, co robi plik .rvmrc etc.

Końcowa uwaga - w życiu jest “coś za coś” <- Railsy są fajne, elastyczne, mają gemy, są “on the edge”, ale będziesz płacił za to konfliktami wersji, czasami ciężkim zrozumieniem tutoriali, bo składnia się zmienia w kolejnych wersjach, ale często jest kompatybilna wstecz.
Nauczysz się jednego, ciężko będzie zrozumieć coś z pozoru inne, chociaż będzie to tak naprawdę to samo.
Nawet doświadczeni developerzy do tej pory korzystają ze składni RoR 2.x i 3.0.x, chociaż nastąpiło dużo zmian w nowszych wersjach.

rails-composer? Jeśli to to samo co kiedyś rails-app to daruj sobie, połowa rzeczy działała źle, wiem, bo też próbowałem iść na skrót , które okazały się wyboistym wertepem.
Poza tym lepiej poznać poszczególne gemy samodzielne, będziesz mieć potem łatwiej z ich implementacją. I tak tego nie unikniesz, jeśli będziesz chciał robić coś bardziej zaawansowanego i optymalizować aplikację.

IMHO developerka, jak i nawet instalowanie gemów jako root to raczej nie najszczęśliwszy pomysł.

[quote]To nie jest rozwiązanie. To obejście problemu.
Część gemów wymaga therubyracer i libv8. Np rails-less i developerka na jruby.[/quote]
Jeżeli jakiś gem wymaga therubyracer do działania to imho “you’re doing it wrong”. execjs może korzystać z dowolnego runtime’u i nie wiem czemu node jako jeden z tych runtime’ów jest obejściem problemu. Np. builpack na heroku domyślnie ściąga node’a i używa go do kompilowania assetów w railsach - bez usprawnień nie skompilujesz tam therubyracer.

[quote=drogus][quote]To nie jest rozwiązanie. To obejście problemu.
Część gemów wymaga therubyracer i libv8. Np rails-less i developerka na jruby.[/quote]
Jeżeli jakiś gem wymaga therubyracer do działania to imho “you’re doing it wrong”. execjs może korzystać z dowolnego runtime’u i nie wiem czemu node jako jeden z tych runtime’ów jest obejściem problemu. Np. builpack na heroku domyślnie ściąga node’a i używa go do kompilowania assetów w railsach - bez usprawnień nie skompilujesz tam therubyracer.[/quote]
Możliwe. Z tego co pamiętam instalowałem kilka miesięcy temu gem który używał less(rails-less?less-rails?) i jako zależność zainstalowany został therubyracer. O tyle dla mnie było to dziwne, no nodejs miałem w systemie.
Może coś się od tego czasu zmieniło.

[i]edit:
A jednak nie. Node.js mam w systemie, aplikacje nie wymagające lessa, działają poprawnie, z lessem :

[WARNING] Please install gem ‘therubyracer’ to use Less.[/i]

[quote=ichi]Możliwe. Z tego co pamiętam instalowałem kilka miesięcy temu gem który używał less(rails-less?less-rails?) i jako zależność zainstalowany został therubyracer. O tyle dla mnie było to dziwne, no nodejs miałem w systemie.
Może coś się od tego czasu zmieniło.[/quote]
twitter-bootstrap-rails? :wink: