Миграции нужны для того, что бы версионировать структуру базы данных. Например Вы хотите создать модель. Для этого нужна таблица в БД. Что бы на production сервере не создавать её руками Вы пишете миграцию, которая будет эту таблицу создавать.
Если снова нужны изменения в структуре БД — Вы снова пишете миграцию. Таким образом мы получаем набор миграций. В rails есть возможность запустить на выполнение все доступные миграции в порядке, в котором они создавались и получить нужную структуру БД.
Миграции пишутся на ruby, что позволяет во многих случаях использовать их для других БД, т.е. Вы разрабатывали для sqlite, а потом выполнили для MySQL, и всё работает.
Миграции можно выполнять как вперёд (например создать таблицу), так и назад (удалить эту же таблицу). Это позволяет переходить к определённым версиям, если можно так выразиться.
При таком объявлении — не нужен, но было бы логично и ожидаемо, если бы методы можно было создавать
при помощи метода new, а потом например привязывать к объектам, классам (как методы класса) или вызывать в контексте какого-либо объекта, как например в javascript с помощью call и apply это делается.
А так получается, что есть ключевое слово def (вроде это именно ключевое слово, не оператор), и есть методы define_method / define_singleton_method… Ну можно через eval ещё создать динамически метод, но это не вариант.
И получается, что методы то объекты, но вот создаются — не как все, а как-то по особенному, что не соответствует принципу наименьшего удивления. Хотя ruby пытаются делать как можно более логичным.
Я говорил, о методах, но как выходит ошибался. Действительно есть класс Method, но метод new у него отсутствует.
ruby-1.9.2-p0 > Method.new
NoMethodError: undefined method `new' for Method:Class
from (irb):15
from /home/saks/.rvm/rubies/ruby-1.9.2-p0/bin/irb:17:in `<main>'
</ore>
Что немного смущает...
Несколько странно выглядит сравнение методов и proc-объектов. Дело в том, что методы в руби не являются обектами. Их конечно можно преобразовать к proc — но это уже другая история.
Статья несомненно интересная, большое спасибо.
P.S. proc-объекты в ruby1.9.X стали умнее, взять хотя бы те же умолчательные значения для передаваемых параметров :)
Это не совсем так, данная фича появилась в ruby1.9 а потом была реализована так же в gem-е ActiveSupport. Так что, если нравиться такая синтаксическая глазурь, то можно сделать require нужной части ActiveSupport и наслаждаться. А лучше использовать ruby1.9.1 или даже 1.9.2.
Помимо того, что нужно пользователям сейчас, нужно смотреть в будующее и делать то, ради чего в сообщество прийдут новые люди, иначе ubuntu так и остался бы дистрибутивом для домохозяек. А linux он в итоге для всех должен быть — к тому разработчики и стремятся.
Пример с flash — это просто не серьёзно. Если Вы не в курсе, как проигрывается flash, то знайте, что если на одном сайте он работает, а на другом нет — то разработчики ubuntu очень косвенно с этим связаны, a виноват flash-player скорее всего.
Каждый релиз ubuntu — работа над ошибками и очень жаль, что не во всех ОС происходит именно так. Ubuntu тем и хорош, что к Вашим жалобам(bug-report-ам) прислушиваются разработчики. Попробуйте дождитесь достаточно оперативной реакции на другой ОС.
Если бы все системы стояли на одних железках — проблем бы не было, или их было бы меньше. Примером может служить MacOS. И уже проблемой драйверов можно объяснить разницу в работе.
А пухлые форумы подтверждают то, что люди пытаются помогать друг-другу и это замечательно.
P.S. Вы много таких же пухлых форумов для пользователей других ОС видели?
Вообще ими можно пользоваться, а можно и не пользоваться, никто не заставляет. Интеграция это несомненно хорошо, а новые возможности ещё лучше. Ubuntu не только десктопный дистрибутив. Я думаю что в любой ОС найдётся куча возможностей, которыми лично Вы не пользуетесь.
Есть вариант поэкспериментировать над стандартной версией дистрибутива с целью освободить место. Т.е. можно использовать globalmenu и тулбары убрать. Можно пойти дальше: выучить контролы для управления окнами (закрыть, минимизировать, раскрыть, перемещение и ресайз) с клавиатуры и отказаться от обрамлений окна. Я как-то заморачивался — ну ооочень компактно получилось :)
Никак не пойму, почему все так много говорят о стандартной теме оформления? В комплекте несколько вменяемых тем — ставь ту что нравиться, а если нет, то в сети их столько… За стабильность сейчас тоже нет смысла спорить, т.к. beta всего.
Внутри системы, насколько язнаю, проделана так же огромная работа по упрощению организации облачных вычислений. Так же в этом релизе обещали хорошенько перебрать все индикаторы в панели, улучшить интеграцию с KDE приложениями и т.д. а вообще было интерью, если интересно могу поискать ссылку на него.
Перед релизом сообщали, что сильных изменений не будет и вообще называли его bug-fix релизом.
P.S. Результаты переработки инфикаторов уже сам заметил и оно радует, хотя у меня сейчас всё в low graphics mode.
Проблемы с Pulse Audio действительно бывают, но за всё время знакомства с Ubuntu(3 года) я их видел 2 раза. Какая у Вас звуковая карта?
2 монитора у меня уже 2 дистрибутива настраиваются «из коробки», а у Вас какая видеокаарта?
С NTFS — тоже проблем нет, раньше требовалось руками ставить ntfs-3g, но потом эту проблему порешали более общо, а конкретнее, что не так у Вас с NTFS?
Перенос кнопок — ну да это и раньше делалось и с помошью мыши, а теперь — ну что ж, люди написали темку, контролы слева, это не направление в развитии дистрибутива.
Клиентами для соцсетей я не пользуюсь, а многие пользуются. Если таких как я меньшинство — то всё честно и я не ропчу, на то что разработчики делают систему не для меня одного. А вообще оно мне НИ РАЗУ не мешало (учитывая то, что ubuntu — моя основная рабочая и домашняя система).
Если Вас не впечатляют результаты работы сообщества ubuntu — что ж, Вы очень искушённый человек, я не такой.
Нужно так же всегда понимать, что нельзя сделать такой продукт который понравиться всем без исключения.
А если Вы не можете поставить новую версию программы… хм… Есть несколько вариантов, как это можно сделать:
— из своего репозитория (для текущего дистрибутива)
— обновиться до следующего и ставить из того репозитория
— сторонний репозиторий (там обычно вссе зависимости присуствуют)
— собрать руками (но что-то мне подсказывает, что Вы так не делали)
Если снова нужны изменения в структуре БД — Вы снова пишете миграцию. Таким образом мы получаем набор миграций. В rails есть возможность запустить на выполнение все доступные миграции в порядке, в котором они создавались и получить нужную структуру БД.
Миграции пишутся на ruby, что позволяет во многих случаях использовать их для других БД, т.е. Вы разрабатывали для sqlite, а потом выполнили для MySQL, и всё работает.
Миграции можно выполнять как вперёд (например создать таблицу), так и назад (удалить эту же таблицу). Это позволяет переходить к определённым версиям, если можно так выразиться.
при помощи метода new, а потом например привязывать к объектам, классам (как методы класса) или вызывать в контексте какого-либо объекта, как например в javascript с помощью call и apply это делается.
А так получается, что есть ключевое слово def (вроде это именно ключевое слово, не оператор), и есть методы define_method / define_singleton_method… Ну можно через eval ещё создать динамически метод, но это не вариант.
И получается, что методы то объекты, но вот создаются — не как все, а как-то по особенному, что не соответствует принципу наименьшего удивления. Хотя ruby пытаются делать как можно более логичным.
Статья несомненно интересная, большое спасибо.
P.S. proc-объекты в ruby1.9.X стали умнее, взять хотя бы те же умолчательные значения для передаваемых параметров :)
Каждый релиз ubuntu — работа над ошибками и очень жаль, что не во всех ОС происходит именно так. Ubuntu тем и хорош, что к Вашим жалобам(bug-report-ам) прислушиваются разработчики. Попробуйте дождитесь достаточно оперативной реакции на другой ОС.
А пухлые форумы подтверждают то, что люди пытаются помогать друг-другу и это замечательно.
P.S. Вы много таких же пухлых форумов для пользователей других ОС видели?
Перед релизом сообщали, что сильных изменений не будет и вообще называли его bug-fix релизом.
P.S. Результаты переработки инфикаторов уже сам заметил и оно радует, хотя у меня сейчас всё в low graphics mode.
2 монитора у меня уже 2 дистрибутива настраиваются «из коробки», а у Вас какая видеокаарта?
С NTFS — тоже проблем нет, раньше требовалось руками ставить ntfs-3g, но потом эту проблему порешали более общо, а конкретнее, что не так у Вас с NTFS?
Перенос кнопок — ну да это и раньше делалось и с помошью мыши, а теперь — ну что ж, люди написали темку, контролы слева, это не направление в развитии дистрибутива.
Клиентами для соцсетей я не пользуюсь, а многие пользуются. Если таких как я меньшинство — то всё честно и я не ропчу, на то что разработчики делают систему не для меня одного. А вообще оно мне НИ РАЗУ не мешало (учитывая то, что ubuntu — моя основная рабочая и домашняя система).
Если Вас не впечатляют результаты работы сообщества ubuntu — что ж, Вы очень искушённый человек, я не такой.
Нужно так же всегда понимать, что нельзя сделать такой продукт который понравиться всем без исключения.
А если Вы не можете поставить новую версию программы… хм… Есть несколько вариантов, как это можно сделать:
— из своего репозитория (для текущего дистрибутива)
— обновиться до следующего и ставить из того репозитория
— сторонний репозиторий (там обычно вссе зависимости присуствуют)
— собрать руками (но что-то мне подсказывает, что Вы так не делали)
О каком варианте Вы говорили в последнем абзаце?