Не запускается rails console

Решил я тут дома на выходных не много побаловаться, кнопки понажимать. И в один прекрасный момент, набрав магическую комбинацию rails concole, получаю следующее:

/home/user/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/completion.rb:9:in `require’: no such file to load — readline (LoadError)
from /home/user/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>’
from /home/user/.rvm/gems/ruby-1.9.2-p180@myproject/gems/railties-3.0.7/lib/rails/commands/console.rb:3:in `require’
from /home/user/.rvm/gems/ruby-1.9.2-p180@myproject/gems/railties-3.0.7/lib/rails/commands/console.rb:3:in `<top (required)>’
from /home/user/.rvm/gems/ruby-1.9.2-p180@myproject/gems/railties-3.0.7/lib/rails/commands.rb:20:in `require’
from /home/user/.rvm/gems/ruby-1.9.2-p180@myproject/gems/railties-3.0.7/lib/rails/commands.rb:20:in `<top (required)>’
from script/rails:6:in `require’
from script/rails:6:in `<main>’

Ошибка! Что-то я оказался вот так сходу не готов к такому развитию событий. Но делать нечего, надо решать возникшую проблему. Если у Вас то же самое — вэлкам! (-:

 

1. Для начала делаем следующее:
sudo apt-get install libreadline5-dev

Что это и с чем это едят, Вы можете узнать по этой ссылке.

Дальше примерно то же самое, что уже как-то приходилось делать.

2. $ cd ~/.rvm/src/ruby-1.9.2-p180/ext/readline/

3. ruby extconf.rb

4. make

5. make install

После всех этих магических манипуляций, всё должно работать! (-:

6. $ rails console
Loading development environment (Rails 3.0.7)
ruby-1.9.2-p180 :001 >

7. Ну и выход:
ruby-1.9.2-p180 :003 > exit

Может кто-то не знает, но консоль предоставляет функцию автодополнения по нажатию Tab.

Приятной Вам разработки!

Июнь 6th, 2011 by none | 10 комментариев

Работа с Git и Github в Ubuntu 11.04

Сегодня я расскажу немного о работе с git и о том, как сделать копию своего проекта на Github.

Прежде всего, нам необходимо установить сам Git. Нет ничего проще:

1. $ apt-get install git-core

После ввода пароля, git будет установлен в систему. В принципе, пару следующих шагов делать не обязательно, но всё должно быть не только работоспособно, но ещё и красиво. Делаем следующее:

2. Указываем владельца репозитария:

$ git config —global user.name «Name or Nickname»

3. Задаём почтовый адрес:

$ git config —global user.email youremail@example.com

Как видите, указывается опция «—global» (если вдруг WordPress опять «съест», то там два дефиса), которая задаёт общие настройки для git в системе. Один раз указали и этого будет достаточно.

С настройками покончено. Приступаем к работе. Для начала перейдём в директорию, в которой хотим создать репозитарий, и который, в будущем, будет загружен на Github.

4. $ cd ~/rails/test_app/

Теперь необходимо инициализировать новый репозитарий. Эта процедура делается один раз в самом начале работы. Опять же, всё очень просто:

5. $ git init

Initialized empty Git repository in /home/<username>/rails/mysql_app/.git/

Как видно из надписи, создан пока ещё пустой репозитарий в директории нашего приложения. Там создалась скрытая директория .git.

Теперь необходимо добавить файлы в наш вновь созданный репозитарий:

6. git add .

Обращаю Ваше внимание, что эта точка «.» указывает, что надо добавить все файлы и директории из текущего каталога. Естественно, рекурсивно будут добавлены все файлы из директорий. Обращаю Ваше внимание, что «рельсы» сами создают скрытый файл .gitignore, в котором хранится информация о том, какие файлы и каталоги не надо сохранять в репозитарии, т.к. они не несут необходимой информации, а так же слишком часто обновляются. Вы сами можете вносить туда изменения на Ваше усмотрение.

Посмотреть же, что git собирается сделать  можно в любой момент командой:

7. $ git status

Теперь мы должны сказать git, что готовы к сохранению изменений:

8. $ git commit -m «Initial commit»

Все изменённые файлы будут добавлены в репозитарий. Дальше вы можете с ними работать, но своеобразная точка восстановления, названная »Initial commit», у нас есть. Всегда можем к ней вернуться.

Увидеть все проведённые нами изменения с репозитарием можно следующей командой:

9. git log

Увидите что-то типа этого:
commit fb6b6349b17fd428a68d6c18a8a5501af6f677a4
Author: http://www.none.com.ua/
Date:   Fri May 13 17:41:55 2011 +0300
Initial commit

Так как у нас всего одно добавление, то и запись всего одна (-:

В принципе, основная работа с git закончена. Теперь попробуем добавить наш копию нашего репозитария на Github. Создание аккаунта и репозитария на Github я оставляю на самостоятельное изучение, там ничего сложного, всё просто и понятно. Я же расскажу про те трудности, которые могут возникнуть, а у меня возникли (-:, при подключении ssh-ключей и загрузке репозитария на Github.

После того, как Вы создадите репозитарий на Github, то вам там тактично намекнут, что-то необходимо бы как-то ssh-ключик подкинуть для красоты и работоспособности. Вот этим и займёмся.

Для начала:

10.  $ cd ~/.ssh

bash: cd: /home/user/.ssh: Нет такого файла или каталога

Если увидели то же самое, то у Вас нет ещё ключей и их надо создать. Давайте создадим:

11. $ ssh-keygen -t rsa -C «youremail@mail.com»
Generating public/private rsa key pair.

Enter file in which to save the key (/home/user/.ssh/id_rsa): <Press Enter>

Created directory ‘/home/user/.ssh’.
Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/user/.ssh/id_rsa.

Your public key has been saved in /home/user/.ssh/id_rsa.pub.

The key fingerprint is:

8a:ee:cb:94:bf:b4:15:64:bc:3c:7a:7b:fb:6f:39:0f youremail@mail.com

The key’s randomart image is:

+—[ RSA 2048]—-+

|                 |

|       .         |

|        +        |

|       + .       |

|        S        |

|     o o o       |

|    + + o     E. |

|   + o + ..   +. |

|   .=.+….o.o.o.|

+——————+

Вместо «youremail@mail.com» напишите свой электронный адрес. Теперь у нас созданы ssh-ключи. Перейдём в директорию с ключами:

12. $ cd ~/.ssh/

13. $ cat ~/.ssh/id_rsa.pub

Этой командой в окно терминала выводится содержимое публичного ключа. Не пугайтесь, всё в порядке, это так и должно быть. Скопируйте это и вставьте по адресу: https://github.com/account/ssh

Там не сложно. Выберите добавление публичного ключа и вставьте скопированное. После этого Github будет готов к работе с нами. Попробуйте вот эту команду:

14. $ ssh git@github.com

The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.

RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘github.com,207.97.227.239′ (RSA) to the list of known hosts.

Agent admitted failure to sign using the key.

Permission denied (publickey).

Мне вот сразу не понравилось это «Permission denied», но я не обратил на это внимание. Как позже выяснилось — очень зря. Но продолжим. Скажем git, какой удалённый репозитарий использовать:

15. $ git remote add origin git@github.com:<your account>/<your repository>.git

Здесь вместо »your account» и «your repository» указываете то, что сами создали на сайте github.com. После этого пытаемся загрузить наш локальный репозитарий на github:

16. $ git push origin master

Лично у меня выдало следующее:

Agent admitted failure to sign using the key.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

И ничего, понятно, не загрузилось на github. Поиск в интернете дал определённый результат. Как оказалось, если я правильно понял, это какой-то «баг» Ubuntu, но, к нашему счастью, это лечится. Делаем следующее:

17. $ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/user/.ssh/id_rsa:
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)

Команда ssh-add — добавляет RSA- или DSA-идентификацию в аутентификационного агента. Иными словами, система теперь будет знать, с каким ключом работать. А теперь пробуем повторить процедуру из пункта 16:

16. $ git push origin master
Counting objects: 65, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (50/50), done.
Writing objects: 100% (65/65), 88.01 KiB, done.
Total 65 (delta 2), reused 0 (delta 0)
To git@github.com:<your account>/<your repository>.git
* [new branch]      master -> master

Теперь можете смело смотреть на github свой новосозданный репозитарий (-:

Май 16th, 2011 by none | 3 комментария

Установка MySQL в Rails 3 на Ubuntu 11.04

В комментариях к одной из предыдущих статей я взял на себя смелость пообещать, что расскажу, как запустить Rails 3 с возможностью использовать MySQL. Ну что ж, назвался груздем — полезай в лукошко! (-:

Приступим. Для начала перейдём в директорию, где у нас хранятся проекты, с которыми будем работать:

1. $ cd ~/rails/

Создадим каркас нового приложения, но уже с поддержкой MySQL, а не sqllite, которая по умолчанию.

2. $ rails new mysql_app -d mysql

Если посмотреть Gemfile в директории созданного приложения, то будет видно изменение: gem ‘mysql2′ вместо gem ‘sqlite3′. Ключ «-d» указывает, какую БД использовать.

Теперь необходимо установить недостающие gem-ы:

3. $ bundle install

Но опять с ходу ничего не получилось лично у меня. Если Вы раньше производили какие-то дополнительные настройки системы, то у Вас может и не будет данной ошибки. Но в моём случае, как логично предположить, ругается на отсутствие в системе MySQL в принципе:

Installing mysql2 (0.3.2) with native extensions /home/boo/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:533:in `rescue in block in build_extensions’: ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

Поэтому необходимо её установить.

Ставим MySQL. В терминале:

4. $ sudo apt-get  install libmysql-ruby libmysqlclient-dev mysql-client mysql-server

Во время установки система запросит ввод пароль root-а для администратора БД. Не забудьте его, он ещё пригодится. Обращаю Ваше внимание, что не стоит его делать цифровым! Я, по наивности своей, думаю, что раз система не боевая, всё только для тестирования, то и пароль «1234567890″ вполне себе сойдёт. Но не тут-то было! Уже потом, после всех установок выскакивает ошибка: TypeError can’t convert Fixnum into String. Так что не повторяйте мои ошибки (-:

Теперь можно повторить команду:

5. $ bundle install

Теперь всё должно пройти удачно: gem установится.

Теперь необходимо создать какую-то БД, с которой будет работать наше приложение. Выполним следующее:

6. $ mysqladmin -u root -p create newmysql

Просто вводим пароль и база будет создана. Теперь нам надо сообщить нашему приложению, какие настройки использовать для доступа к БД. Для это есть специальный файл конфигурации: config/database.yml. Открываете его в любом удобном редакторе и изменяете на введёные Ваши данные. Должно получиться что-то типа этого:

development:

adapter: mysql2
encoding: utf8
reconnect: false
database: newmysql
pool: 5
username: root
password: megapassword
host: localhost

Соответственно Вы подставляете свои данные. Пытаемся запустить сервер, естественно, из директории приложения:

7. rails s

Только вот если Вы делали всё то же самое, что и я, то в консоли Вы увидите что-то типа этого:

WARNING: This version of mysql2 (0.3.2) doesn’t ship with the ActiveRecord adapter bundled anymore as it’s now part of Rails 3.1

WARNING: Please use the 0.2.x releases if you plan on using it in Rails <= 3.0.x

Сервер запустится, даже можно будет посмотреть картинку по адресу localhost:3000. Только вот незадача: если кликнуть ссылку в браузере About your application’s environment, то опять же будет видно, что не всё в порядке…

Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (no such file to load — active_record/connection_adapters/mysql2_adapter)

ActiveRecord::ConnectionNotEstablished

В общем, приложение с БД не работает. Но не отчаивайтесь! Это исправимо. Если опять прочитать сообщение в логах от сервера, но уже внимательно, то станет ясно, что устанавливаемый по умолчанию gem mysql2 уже версии 0.3.2 является уже частью Rails 3.1, будущего релиза. Чтобы мы могли использовать этот gem в нашей версии «рельс», то надо установить gem версии 0.2.х. Ну что же, давайте сделаем это. Некоторые непродолжительные поиски в сети дали совет, что версия 0.2.7 вполне будет работоспособна. Для этого вносим изменения в Gemfile:

8. gem ‘mysql2′, «0.2.7″

После этого опять производим установку нужного gem-a:

9. $ bundle install

Лично у меня всё прошло успешно. Запускаем сервер:

10. $ rails s

В логах — никаких не нужных предупреждений, ничего подобного. По адресу localhost:3000 всё тоже красиво, а особенно надпись:

Database adapter:   mysql2

Вот теперь наше приложение вполне работоспособно и с MySQL.

Удачи всем! (-:

Май 11th, 2011 by none | 12 комментариев

Установка jQuery для Rails 3 в Ubuntu 11.04

Сидел я, сидел, было мне скучно… и решил я установить в «рельсы» jQuery. По умолчанию там стоит prototype. Хотя, если верить анонсам, то по умолчанию в 3.1 «рельсах» будет изначально уже jQuery, а при желании можно будет установить и prototype.

Ну что ж, приступим. Напоминаю, что все действия необходимо выполнять в директории приложения.

1. Добавляем в Gemfile:

gem ‘jquery-rails’

2. В терминале запускаем:

$ bundle install

3. Теперь можно попытаться установить jQuery:

$ rails g jquery:install

Не знаю, как у Вас, но у меня выдало неимоверное количество ошибок! Примерно следующее:

remove  public/javascripts/controls.js
remove  public/javascripts/dragdrop.js
remove  public/javascripts/effects.js
remove  public/javascripts/prototype.js
fetching  jQuery (1.6)
create  public/javascripts/jquery.js
create  public/javascripts/jquery.min.js
fetching  jQuery UJS adapter (github HEAD)
/home/none/.rvm/gems/ruby-1.9.2-p180@project_name/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:239:in `require’: no such file to load — openssl (LoadError)
from /home/none/.rvm/gems/ruby-1.9.2-p180@project_name/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:239:in `block in require’
from /home/none/.rvm/gems/ruby-1.9.2-p180@project_name/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:225:in `block in load_dependency’
………………
from /home/none/.rvm/gems/ruby-1.9.2-p180@project_name/gems/railties-3.0.7/lib/rails/commands.rb:17:in `<top (required)>’
from script/rails:6:in `require’
from script/rails:6:in `<main>’

Ясно, что дело тёмное: не работает (-: Но нас этим не испугаешь! ((-: Как видим, ругается на библиотеку openssl. Ну что ж, ничего не остаётся, как заставить и это работать!

4. Выполняем опять в терминале:

$ sudo apt-get install openssl libssl-dev

5. После того, как установились необходимые библиотеки, необходимо немного пошаманить с исходниками ruby. Не пугайтесь, ничего страшного в этом нет. Это всё вполне обыденная практика в UNIX-like системах. Плохо это или хорошо — каждому своё. Привыкшем к работе в «винде», это покажется прошлым веком, ужасным и пугающим, рудиментами командной строки DOS. Но, раз уж Вы в Linux-e, то уж будьте добры понять, полюбить, принять и работу в командной строке. Но продолжим. Необходимо перейти в директорию, где установлена текущая версия ruby:

$ cd ~/.rvm/src/ruby-1.9.2-p180/ext/openssl/

Не столько ruby, сколько её работа с openssl. Ну вот у меня такой путь, т.к. именно такая версия ruby установлена на данный момент в системе.

6. Запускаем конфигурирование:

$ ruby extconf.rb

7. Производим заново компиляцию:

$ make

8. Устанавливаем изменения:

$ make install

9. Теперь можно вернуться опять в директорию приложения и попытаться повторить процедуру:

$ cd ~/rails/testapp/

$ rails g jquery:install

Если Вы всё сделали правильно и у Вас не было ошибок на предыдущих этапах, то увидеть вы должны следующее:

remove  public/javascripts/controls.js
remove  public/javascripts/dragdrop.js
remove  public/javascripts/effects.js
remove  public/javascripts/prototype.js
fetching  jQuery (1.6)
identical  public/javascripts/jquery.js
identical  public/javascripts/jquery.min.js
fetching  jQuery UJS adapter (github HEAD)
conflict  public/javascripts/rails.js
Overwrite /home/none/rails/testapp/public/javascripts/rails.js? (enter «h» for help) [Ynaqdh] Y
force  public/javascripts/rails.js

 

На данном этапе рельсы спрашивают, что же им делать с файлом rails.js?! Так как у нас только каркас приложения, то смело можно перезаписать данный файл.
Вот и всё! Можем поздравить сами себя! Теперь у нас приложение на Rails может смело использовать всю мощь библиотеки jQuery. Хочу только обратить Ваше внимание, что устанавливается версия jQuery 1.6. Если Вам для работы нужна другая версия, то укажите об этом в Gemfile. Удачи в разработках!
Май 10th, 2011 by none | 2 комментария

Первый запуск Rails на Ubuntu 11.04

В прошлой раз удалось установить практически всё необходимое для запуска рельс. Единственное, рекомендую выполнить ещё одну команду, чтоб система запомнила, какую версию ruby использовать:

$ rvm —default 1.9.2@project_name

Проделаем следующее. Перейдём в домашнюю папку:

$ cd

Создадим рабочий каталог и зайдём в него:

$ mkdir rails && cd rails/

Теперь у нас готова почва для создания первого нашего приложения. Создать каркас для него можно следующей командой:

$ rails new testapp

Будет создано много файлов и директорий, всё это просто жизненно необходимо для работы наших последующих приложений.

Перейдём в только что созданную директорию и посмотрим её содержимое:

$ cd testapp/ && ls -al

Много-много всего разного и не понятного, но не расстраивайтесь, со временем всё станет ясно (-:

Предлагаю посмотреть, что же это у нас тут создалось. «Рельсы» идут вместе со встроенным веб-сервером для отладки приложения. Поэтому, если находиться в директории созданного приложения, а потом в терминале выполнить команду:

$ rails s

то запустится сервер, и можно будет в браузере посмотреть, что же такого мы создали. Но скорее всего вы увидите то же самое, что и я:

Could not find gem ‘sqlite3 (>= 0)’ in any of the gem sources listed in your Gemfile.

Если Вы посмотрите файл Gemfile в директории с приложением, то увидите, что по умолчанию «рельсы» хотят видеть базу данных sqllite3, о чём и упоминается в данном файле: gem ‘sqlite3′. Вообще в этом файле описываются все gem-ы, которые будут использоваться в приложении. Но пока надо исправить то, что есть. Делаем следующее:

1. В Gemfile меняем gem ‘sqlite3′ на gem ‘sqlite3-ruby’, :require => ‘sqlite3′

2. В терминале:

$ sudo apt-get install sqlite3 libsqlite3-dev

3. После завершения, опять в терминале:

$ gem install sqlite3-ruby

Вот теперь можете опять попробовать выполнить команду rails s, находясь в директории приложения. Всё должно запуститься. После этого в браузере наберите адрес localhost:3000 и увидите вывод Вашего первого приложения. Удачи в разработке!

Стоит ещё добавить, вместо команды gem install sqlite3-ruby,  в какой-то степени правильнее было бы выполнить команду

$ bundle install

Эта команда устанавливает все необходимые gem-ы, которые упоминаются в Gemfile. Это чтоб Вы знали на будущее.

Май 10th, 2011 by none | 2 комментария