Witam, przygodę z Rails zacząłem bardzo niedawno i wszystko szło dobrze, aż do momentu kiedy muszę uruchomić moją aplikację na serwerze. Wykupiłem hosting na stronie newrails.pl (pakiet pro) i… no i co dalej? Szukałem na forum, pytałem o radę wujka google jednak za nic nie mogę uruchomić aplikacji na serwerze. Gdyby ktoś mógł podzielić się jakąś radą, ew. linkiem do jakiegoś opisu jak skonfigurować i uruchomić aplikację Rails na serwerze byłbym bardzo wdzięczny
masz ssh? pewnie tak
ssh na_serwer?działa, pewnie tak
man scp, miła lektura
na serwerze jak już wszystko będzie mail firmy hostingowej gdzie to masz i niech podepna pod domene, albo sam edytujesz plik .htacess jak, jets nawet tu na forum, i pozniej touch tmp/restart.txt
a no i baza, nazwa pewni inna niz lokalnie wiec zmieniasz w config/database.yml
no i rake db:create, migrate
i tyle
Edit
Właśnie wyczytałem, że nie ma shell!!! w wersji pro, karygodne jak dla mnie. No to wtedy zostaje ci wyklikać to w c-panel. Masz tam coś ala nowy projekt rails. Zakładasz to utworzy ci jakiś katalog zapewne i tam przez ftp wrzucasz wszystko a pozniej, hmm nigdy nie probowałem przez c-panel ale pewnie jakiś opcje bedą by to odpalić, zmigrować itp.
Ech a widziałeś ich screencast krok po kroku jak to zrobić?
http://newrails.pl/site/contents/show/rails/screencast/cpanel
z taką pomocą na pewno sobie poradzisz
Ich screencast widziałem, zrobiłem tak jak tam pokazane było, ale problem mam z migracją bazy danych. Shell nie mam, a nie chce kupować droższego hostingu (póki co). Sama aplikacja już zaczyna powoli działać, zostaje tylko baza danych - w jaki sposób w ogóle się za to zabrać??
No więc, nie znam tego cpanelu do rails, moze mozna latwiej ale normalnie mozesz to zrobic tak:
- zakladasz baze przez cpanel
- ustawiasz jak w pliku config/database (zwroc uwage ze bazy czesto maja forme nick_nazwabazy, a nie sama nazwabazy)
- robisz lokalnie u siebie dump (nie wiem z czego korzystasz, pewnie mysql, w postgres masz pgdump nazwa, wiec pewnie mysqldump czy cos takiego sprawdz sobie
- jak zrzucisz dump do pliku wchodzisz do mysqladmindb czy jak to ta sie nazywa, i dajesz import, wybierasz plik i masz. Mozesz zorbic z danymi, lub sama strukture.
- mozesz tez wystac im link by w katalogi aplikacji wydali za ciebie komendy do migracji bazy
Dobra, z bazą sobie poradziłem (nawet nie było tak źle ^^) teraz został jeden problem - instalacja gemów. Używam w aplikacji CanCan’a, zainstalowałem go na serwerze (według instrukcji), tylko teraz jak zrobić żeby moja aplikacja z tego korzystała? Skopiowałem pliki na ftp, uruchomiłem i wywala błąd przy sprawdzeniu uprawnień z CanCan, tak jakby nie było tego pluginu.
jeśli instalowałeś gemy/pluginy na serwerze, to nie rozumiem jakim cudem aplikacja sie rzuca o dostęp do nich. może je nadpisałeś swoimi wrzucając pliki przez ftp, ale to i tak nie powinno mieć znaczenia bo prawa są na katalog nadane. dodałeś w environment.rb (jeśli instalowałeś jako gem, przy pluginach nie trzeba)
config.gem "cancan"
?
W pliku environment.rb mam dopisane:
config.gem "cancan"
config.gem "restful_authentication"
config.gem "will_paginate"
Błąd jaki dostaje:
undefined local variable or method `current_user' for #<IndexController:0xb749a720>
Czyli tak jakby, nie widział restful_authentication, a jest zainstalowany jako gem na serwerze. Próbowałem też wrzucić to do katalogu vendor/plugins na ftp, ale taka sama sytuacja Na localhoście wszystko działa poprawnie.
bo tą metode musisz mieć w ApplicationController
Np tak znalazłem na necie
[code=ruby]def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end[/code]
no ale wcześniej musisz sobie cos do autentyfikacji zainstalować, bo cancan jest do autoryzacji
Wszystko działa. Zapomniałem dopisać
include AuthenticatedSystem
w ApplicationController. Przy wrzucaniu plików na ftp widocznie nie nadpisałem tego pliku swoim plikiem. Dzięki wielkie za naprowadzenie na właściwy trop
Edit: OK, wszystko działa jak powinno, mam tylko jedno pytanie jeszcze, jak mogę ukryć numer portu w domenie? Np. mam domene domena.pl, aplikacja rails działa na domena.pl:12039 i co zrobić, żeby po wpisaniu samego adresu domena.pl (bez portu) działało tak jak powinno?
Nie wystarczy Ci ustawienie standardowego portu WWW, czyli 80? Wtedy nie będziesz musiał podawać numeru portu.
Może i wystarczy… tylko - jak??
Edit: Dobra, udało się, nie było takie trudne jak myślałem Dziękuję ślicznie za pomoc
No i kolejny problem, mianowicie jak spolszczyć komunikaty z walidacji formularzy? Np. mam formularz rejestracji (z pluginu restful_authentication), który ma kilka dodane kilka warunków typu unikalny login itd. Problem polega na tym, że każdy komunikat o błędzie zaczyna się od nazwy pola, więc dodanie :message=> ‘costam’ odpada, bo np. przy złym haśle błąd będzie: “Password jest niepoprawne”. Dodatkowo nagłówek kawałka, gdzie wyświetlone są błędy też jest po angielsku (“X errors prohibited this user from being saved”). Jak zmienić treść tych wiadomości?
nazwe pola, ktore sie pokazuje mozesz zmienic na inne w modelu, a co do komunikatow, to najlatwiej pewnie w pliku z lokalizacja. tylko odpowiednia ‘‘sciezke’’ trzeba wpisac i tlumaczenie.
Dzięki wielkie, nie wiedziałem jeszcze, że jest coś takiego mądrego jak lokalizacja gotar masz u mnie piwo