Archiwum tagów: ruby

RVM, Ruby, Rails – instalacja

Witam,

Postanowiłem ze napiszę notkę dotyczącą instalacji RVM’a, Rubiego i Railsów, żeby wszystko mieć w jednym miejscu a przy okazji może ktoś kiedyś z tego skorzysta :)

Opis dot. instalacji w systemie Ubuntu 11.10 ale na innej dystrybucji (Linux Mint, Debian itp.) również powinno zadziałać.

Aby zainstalować Ruby on Rails w systemach typu unix wystarczy wykonać kilka poniższych kroków:

1. Instalacja GIT’a i CURL’a

sudo apt-get install git curl

2. Instalacja RVM’a (Ruby Version Manager)

curl https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable

Po zakończeniu instalacji edytujemy plik .bashrc

gedit ~/.bashrc

Sprawdzamy czy na końcu pliku  została dodana taka linika:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
# Load RVM into a shell session *as a function*

Jeżeli nie ma to dodajemy i zamykamy edytor.
Zamykamy oraz otwieramy terminal (otwieramy nową sesję konsoli aby wczytał się plik .bashrc wraz z nowym wpisem).

Następnie sprawdzamy czy RVM został zainstalowany poprawnie

type rvm | head -1

Powinno nam wyskoczyć

rvm jest funkcją

Jeżeli mamy system w innym języku, napis pojawi się własnie w tym języku.

Pozostała nam jeszcze kwestia instalacji kilka dodatkowych zależności.
Aby zobaczyć jakie biblioteki musimy jeszcze zainstalować wpisujemy:

rvm requirements

W moim przypadku będę używał Rubiego więc zgodnie z instrukcja w terminalu należy wpisać

sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

Ruby on Rails domyślnie dostarczany jest z bazą danych sqlite3. Ja natomiast korzystam z bazy MySQL, więc instaluję zawszę jeszcze dwie dodatkowe biblioteki (nie jest to jednak konieczne do poprawnego działania Railsów).

sudo apt-get install libmysqlclient-dev libmysql-ruby

3. Instalacja języka Ruby

rvm install 1.9.2

Następnie wybieramy wersję, którą chcemy używać

rvm use 1.9.2

I tak dla pewności sprawdzamy czy aby na pewno wszystko zadziałało :)

user@user:~$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]

4. Instalacja Railsów

W końcu możemy zainstalować gem rails używając polecenia

gem install rails

I….. to by było na tyle.

Stwórzmy teraz prostą aplikację (tylko do testów) używając Ruby on Rails

rails new test_app
cd test_app
rails server

Jeżeli podczas wywoływania polecenia rails server wystąpił błąd podobny do tego

/home/user/.rvm/gems/ruby-1.9.2-p290@rails311/gems/execjs-1.2.9/lib/execjs/runtimes.rb:47:in `autodetect': Could not find a JavaScript runtime. See
https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
...
...
...

pod tym linkiem znajduje się rozwiązanie. Co prawda tyczy się błędu wywołanego przez inne polecenie jednakże rozwiązanie dla obydwu jest takie same.

Następnie należy otworzyć przeglądarkę i wpisać

http://localhost:3000/

Naszym oczom powinna pokazać się strona powitalna Ruby on Rails :)

Could not find a JavaScript runtime

Witam,

Tworząc nowy projekt w railsach 3.1 podczas wywołania

rake db:create

Pojawił mi się taki oto błąd:

Rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.

(See full trace by running task with --trace)

Aby pozbyć się tego błędu należy dodać do pliku Gemfile dwa gemy:

gem 'execjs'
gem 'therubyracer'

Oczywiście jeszcze:

bundle install

I wszystko działa jak należy :)

Pozdrawiam

Wyłączenie automatycznego zapisu znaczników czasu w Railsach

Witam,

Pisząc aplikacje prawie zawsze potrzebuję w swoich tabelach tych dwóch kolumn, tj. created_at oraz updated_at.  Jak wiemy railsy automagiczne „opiekują się” tymi polami, więc zasadniczo nie musimy się w tej kwestii niczym przejmować i zawracać sobie tym głowy.

Jednak czasem zdarzy się taki przypadek, że chcemy aby railsy nie zmieniały pola updated_at podczas aktualizacji wiersza. W bardzo prosty sposób można tę funkcjonalność wyłączyć. Wystarczy wpisać:

W pliku danego modelu (w którym chcemy wyłączyć):

self.record_timestamps = false

Lub w config/environment.rb na końcu pliku ( jeżeli chcemy wyłączyć dla całej aplikacji)

ActiveRecord::Base.record_timestamps = false

Używane raczej rzadko ale jednak czasem się przyda :)

Pozdrawiam