вторник, 9 ноября 2010 г.

Перезапустить crontab

Если crontab был модифицирован, то для принятия изменений необходимо его перезапустить:

sudo /etc/init.d/cron restart

понедельник, 8 ноября 2010 г.

Thinking Sphinx документация

Самая подробная документация по Thinking Sphinx находиться на сайте Thinking Sphinx
Для быстрого старта, неплохо бы посмотреть видео-урок на railscasts: Thinking Sphinx (Railscasts)
Немного русской доки можно почерпнуть на форуме: http://rubyclub.com.ua/

Самая простая и быстрая установка php5+apache2+mysql

Хочу поделиться очень простым способом настройки связкии php5+apache2+mysql на linux.

Все гениальное просто:

sudo apt-get install phpmyadmin

Теперь только нажимать "Yes" когда попросят :) и ввести пароль и логин пользователя mysql. Данный трюк возможен из-за того, что установщик пакетов автоматически устанавливает необходимые программы, которые нужны для работы phpmyadmin (либо же любой программы которую надо установить)

Книга по рельсе 3. Ruby on Rails Tutorial. Learn Rails by Example

Недавно случайно нашел неплохую онлайн-книгу с примерами по Rails 3. PDF и ScreenCasts платные, но с сайта можно читать сколько угодно. Впечатлениями от прочтения поделюсь позже.

Знакомтесь - Ruby on Rails Tutorial: Learn Rails by Example by Michael Hartl.

пятница, 5 ноября 2010 г.

Rails. Загрузить данные в таблицы из YAML файлов

Пусть у нас есть папка, в которой находяться yaml файли с данными для таблиц. Название таблицы и соответствующего yaml файла должны совпадать.

Создадим простой rake-task, который поможет нам наполнить таблицы данными из yaml файлов.

"Path to Yaml directory" - путь к директории с Yaml файлам
table1,table2,table3 - название таблиц в БД.

Реализация таска:

вторник, 19 октября 2010 г.

Как в JavaScript изменить якорь в URL и перейти по нему одновременно

Если с помощью JavaScript обновлять только якорь URL, то редиректа страинцы не произойдет. Это часто используется в разных механизмах передачи данных между iframe-мами, которые могут менять якоря друг-другу. Но может стоять и противоположная задача - при изменении якоря, обязательно делать редирект. 

В таком случае нам поможет код:


path = "www.some-domain.com/index.html#value";
window.location.href = path;
window.location.reload(true);


У такого подхода есть один недочет: если вы так обновляете страницу у которой старый URL отличаеться от нового не только якорем, то произойдет редирект страницы саму на себя - всему виной строка 3, которая должна запускаться только если URL отличаются якорями.

Если вы хотите написать универсальный метод, то тогда придется немного усложнить код:

function redirectPage(url){
  newUrlParts = url.split("#");
  currentUrlParts = window.location.href.split("#");
  window.location.href = url;
  if(newUrlParts[0]==currentUrlParts[0])
    window.location.reload(true);
}


Такой метод будет работать универсально.

среда, 6 октября 2010 г.

Yii. Добавить новый getter в модель

Бывают случаи, когда после поиска, в результирующем наборе данных должно быть поле, которого нету в таблице. Например, у нас есть в таблице поле адрес, которое в себе содержит название города.

Пусть поле адрес до первой запятой содержит название города. Как лучше всего решить задачу?

Ответ прост, добавить новую property в модель и переопределить для нее getter. К счастью, с Yii это сделать достаточно просто.

Откроем файл с классом модели и добавим такой код:


/**
* @property string $city
*/
protected $city;

/**
* get City property
*/
public function getCity(){
  $address = $this->getAttribute('address');
  $list = explode(",",$address);
  if(count($list)==0)
    return "";
  return trim($list[0]);
}



Теперь можно достать такое поле так:

$criteria = ...
$result = ModelName::model()->->findAll($criteria);
foreach ($result as $item){
  $city = $item->getCity();
  $name = $item->getAttribute('name');
}


Я специально достал из набора два разных поля, чтобы показать как обращатся к стандартной проперти, а как к той что мы создали сами.