>>366707
>Для тех, кто хочет сразу понять суть - Why's (Poignant) Guide to Ruby.
Половину прочитал и дропнул. Лисички конечно милые, но я Ruby хочу изучать, а не всякий бред читать.
Нашёл такой гайд: http://ruby.learncodethehardway.org/book/
Кто-нибудь пробовал / может отписать?
>>366714
Лол, гайд старый и не мой. И гайд Вая тоже говно как и он сам, learncodethehardway тоже шлак. Читай лучше Eloquent Ruby или The Well-Grounded Rubyist.
Могу порекомендовать Programming Ruby и POODR. Самые лучшие книги. Можешь попутно порешать задачки с rubyquiz.com.
>>366716
> Eloquent Ruby
Если Eloquent Ruby создан по образу и подобию Eloquent JavaScript, то я умру со скуки.
>>366719
Лол тоже дропнул Eloquent JavaScript. Пиздец какая унылая книжка, но ER точно не такой.
>>366718
> rubyquiz.com
> no longer the site for the current challenges
Есть задачник поактивнее?
>>366724
Есть вот этот: https://www.hackerrank.com/
Ну и r/dailyprogrammer на реддите. Но к чему тебе активность? Самое главное челлендж, плюс там есть решения на Руби, хоть и на старой версии, но всё же могут быть полезными для разбора других подходов к решению задачи.
Котаны, прошел все бесплатности на кодскул, прочел туториал Хартла, написал свой блог с нуля с регистрацией, комментами, лайками, поиском и прочей хуйней. Что дальше читнуть? Подозреваю что-нибудь по тестированию, а еще?
>>366776
> а еще?
Это — http://ruby-metaprogramming.rubylearning.com/
Рельсоняши, есть одна проблема.
Есть сущности "статья" и "комментарий". Статья has many комментариев.
Я хочу сделать отдельную страницу, на которой будут все комментарии, и рядом с каждым комментарием название статьи, к которой данный комментарий написан.
Вот примерная реализация:
<% Comment.all.each do |comment| %>
<%= Article.find(comment.article_id).name %>
<%= comment.text %>
<% end %>
Проблема в том, что создаётся столько sql запросов, сколько вызовов Article.find. Поискал по поводу n + 1 problem, но не выходит через includes сделать, т.к. для этого нужно, чтобы статья принадлежала комментарию, а у меня наоборот.
>>367131
Может моего скилла не хватает и вру, но зачем файнд? Можно ж просто коммент.артикль.нейм же... Связь билон_ту у комментарии к артиклю только поставьте же...
Есть подобие твитера, хочу запилить @replies, ткните носом, куда читать.
>>367131
@comments = Comment.joins(:article).includes(:article)
Что-то типа того.
Also, используй slim вместо erb.
Also, запросы в вью — это плохо, пньнятненько?
>>367165
>Also, используй slim вместо erb.
Вся суть рельсо-няш: главное не результат, а оформление.
>>367144
бумп, на стаковерлоу нашел пару советов, но они аутдейтед.
>>367289
В общем сделал. Опишите примерный алгоритм, что бы из сообщения проверялись по регэкспу и заменялись на ссылки слова.
Спрошу здесь. Так как тут опытные рубисты %%ололо%
есть база на leveldb, ее нужно наполнять бекраунд процессом, который стартуется по крону и нужно читать на вебе.
так вот. как шарить между разными процессами (скрипт, вебморда) коннекшен инстанс к базе. (единоверенно с leveldb может работать только один процесс)
Вот например есть такой код, как сделать, что б он еще и @name конвертил в ссылку на юзера?
def linkify_hashtags(hashtaggable_content)
regex = SimpleHashtag::Hashtag::HASHTAG_REGEX
hashtagged_content = hashtaggable_content.to_s.gsub(regex) do
link_to($&, hashtag_path($2), {class: :hashtag})
end
hashtagged_content.html_safe
end
Поясните за гуй: shoes vs JRuby vs IronRuby
>>368163
ты что совсем ?
shoes это гуй, жруби это имплементация руби над жвм, а айронруби наж клр, айронруби скорее мёртв. жруби в продакшене с оракловским трюфелем.
шуз (4) обёртка над свт.
обыкновенный дсл над гуевскими либами, относительно лучше чем остальные, ещё есть из вроде живых (~полгода назад смотрел) фок4руби
>>368165
шуз это свт?
я имел в виду JRuby + JavaFX или Swing
Iron ruby + Дотнеттовский гуй
>>368163
>гуй
>руби
/0
как бы мне хотелось чтобы у руби были такие же либы для qt как и у питона.
В чём писать код: Vim, Emacs или Sublime Text 2? В чём пишут местные рубисты? Я только начинаю перекат в этот ваш Ruby, и со всех сторон крики "Emacs, Emacs!", но я попробовал его, и он как-то не очень юзер-френдли. Есть ли смысл упарывать его, вникать, или ST2 не хуже? я уже понял, что Emacs БОЛЬШЕ, чем текстовый редактор, но пригодится ли это?
inb4: пиздуй в /s/
>>368227
пиздуй в /b
Если еmacs показался не юзер-френдли, то вим вообще пиздецом каким покажется если не правильно подойти к обучению. Пиши в чем тебе удобно. Завтра рубисты говно будут есть инб4 они уже едят, ты тоже попробуешь говно на вкус?
мимовимобог
>>368155
Ну так это для твитора. Здесь просто заменяет все @слова на ссылку на твитер twitter.com/слово. А мне надо, что бы он сначала искал юзера по нику, а затем заменял на ссылку на него.
>>368227
Мне Emacs нравится только как текстовый редактор. Во всё остальное он тоже умеет, но как-то неудобно. Разве что в тетрис поиграть. Даже терминал держу отдельный.
>>368166
из жруби можно испоьлзовать и свинг (есть дсл) и жавафикс, и свт но там вроде либа умерла
def set_log_file
date = Time.new.utc
dir = "#{Rails.root}/log/#{Rails.env}/#{date.year}/#{date.month}/"
FileUtils.mkdir_p(dir)
log_file_path = dir + "#{date.day}.log"
FileUtils.touch log_file_path
LogStasher.logger = Logger.new log_file_path
LogStasher.logger
end
Анон, почему после этих манипуляций у меня какаето херь с правами происходит? С правами для папок и для файлов. Приходится в ручную сетить всем 777. Как создавать дерикторию и сразу давать сетить ей премишены? Подскажите.
>>368638
FileUtils.mkdir_p(dir,:mode => 0700)
отакот работает
https://www.coursera.org/course/webapplications
starts in a month
>>368897
http://guides.rubyonrails.org/getting_started.html
Читается за вечер.
рабиняши динамикопоняши
Прочитал туториал Хартла, но в голове как-то мало отложилось. Че теперь делать, чтобы разобраться, блог пилить?
>>368991
Я после читал
edgeguides.rubyonrails.org/getting_started.html (en)
http://rusrails.ru/getting-started-with-rails (ru)
и делал свою википедию.
>>366707
Рубака, пишущий свой уникальный аналог pcpartpicker'a сайт по подбору комплектующих для пекарни, снова с вами. Вылезла проблема: когда юзер удаляет из валидной пекарни проц, пекарня сохраняется и является по прежнему валидной. Если запустить проверку валидности вручную (метод publish), все ошибки находятся и статус нормально откатывается. Как я понял, все проблемы таятся в использовании Mongoid'a, который производит валидацию только изменившихся полей. А, поскольку, у связи has_one-belongs_to foreign_key хранится только у child'a, то c изменением PackSet'a ничего не изменяется. Итак, проблема - заставить Mongoid проводить валидацию при каждом сохранении.
class Computer
include Mongoid::Document
...
field :state, default: 'new'
...
has_one :cpus, class_name: 'PackSet', inverse_of: :cpus
...
with_options if: :published? do |c|
c.validates_presence_of :cpus
...
c.validates :cpus_validator
...
end
after_validation :check_state
...
def publish
self.state = 'published'
self.save && self.published?
end
def published?
return self.state == 'published'
end
def make_edited
self.state = 'edited'
self.save
end
...
def cpus_validator
if motherboard && cpus.present?
errors.add(:cpus, "Not enough cpu sockets") if cpus.count > motherboard.number_of_sockets
cpus.each do |cpu|
errors.add(:cpu, "Processor socket type mismatch") unless cpu.socket == motherboard.socket
end
end
end
...
def check_state
if self.errors.any?
self.violations = errors.full_messages
self.make_edited
elsif self.published?
self.violations = []
end
return true
end
>>369298
>mongodb
>has_one
>foreign key
все_ебанулись.жпг
Алсо, у монгоида нет хука after_save или before_save? Он же как бы AR, только для монги.
>>369318
Хуки есть (строчка after_validation :сheck_state), но вот что дальше делать конкретно с before_save - не соображу, т.к. если документ - инвалид, до этого хука дело не дойдет.
>>366707
>Vim, Sublime Text 2, TextMate, GNU Emacs
Посмотрел бы я, как ты работаешь с проектом на полтора миллиона строк в виме.
А вообще, руби-бляди, есть ли причины использовать руби на сервер-сайде вместо пхп, кроме ЕТА КРУТА И МОДНА КАРОЧЬ Я СЛЫШАЛ КРУТЫЕ ПРАГРАМИСТЫ ПИШУТ НА РУБИ А НА ПХП ТОЛЬКО ЛАХИ))?.
Пхп ведь уделывает руби по быстродействию, удобству сишного API, потреблению памяти, низкоуровневости там, где это надо, простоте разворачивания контуров. Если сравнивать на уровне фреймворков - тот же phalcon уделывает рельсы и по фичам, и по архитектуре, и по быстродействию. В серьезном хайлоаде никому и в голову не придёт использовать руби.
Так зачем нужен руби, скажите мне, руби-бляди?
>>369342
Фрактал отсоса закукарекал.
Не касаясь проблем языка - смотри, рельсы они одни. Не знаю как там твой falcon, но в раше при выборе пхп ты будешь настраивать битриксы и вордпрессы с джумлой. И если выбирать между рельсами и битриксом, по-моему выбор очевиден.
>>369355
хачую. сам в прошлом битриксоид.
А вообще не отвечай этому толстяку
>>369355
>фрактал отсоса
Я КАРОЧЬ НИКОГДА НЕ ПИСАЛ НИЧЕГО СЛОЖНЕЕ HELLO_WORLD.RB И НИКОГДА НЕ РАБОТАЛ ПРОГРАММИСТОМ, НО Я ЧИТАЛ НА ХАБРЕ ЧТО ПХП ЕТА ДЛЯ ЛАХОВ А РУБИ ДЛЯ КРУТЫХ ПРОГРАММИСТОВ))
>рельсы они одни
Я КАРОЧЬ СМОТРИ ТАКОЙ ВЕСЬ ИЗ СЕБЯ МОДНЫЙ НИТАКОЙ КАК ВСЕ))
Ну ясно, типичные аргументы программиста на руби.
>битрикс
>джумла
Даже не знаю, что это такое, слышал только названия краем уха. Не обязательно идти в говноконторы и клепать гостевухи за хлеб. У нас вот нет этого говна, есть сложные экономические системы на узкоспециализированных самописных фреймворках, высоконагруженные сервисы и API, миллионы строк кода, десятки серверов в контуре приложения, на одном обсчитываются данные, очень сложно структурированные, которые для хранения требуют не одну сотню таблиц на нескольких серверах БД, на другом - кеш в оперативке, на третьем - полнотекстовый индекс и поисковый демон, на четвертом - крон-скрипты, обработчики очередей, рассылка писем, и так далее, сам код на пхп по сути играет не самую большую роль. Никой джумлы, никаких гостевух, не знаю, где вы находите это говно и почему ассоциируете его с пхп. Будто если написать трёхстраничное говно с двумя mysql таблицами на руби или питоне - оно от этого перестанет быть говном и резко превратится в произведение программистского исскуства. Важен не язык, а то, что ты создаешь. Можно выучить руби и при этом создавать бесполезное и тормозное говно, а можно на пхп создавать сложные и высоконагруженные системы с идеальной архитектурой. И на руби можно, конечно, но кому это надо, когда есть пхп, который выигрывает по всем пунктам в реальном продакшене и проигрывает только в статьях теоретиков с хабра?
>>369402
>сложные экономические системы
>высоконагруженные сервисы
>миллионы строк кода, десятки серверов
>пхп
Ну пиздец, тебе только посочувствовать. Это, я не знаю, это как буханка и троллейбус. А не пробовали, например, взять нормальный язык?
>>369410
Да не, всё отлично, язык замечательный, с каждой новой версией писать приятнее и приятнее, вон в 5.5 запилили встроенный opcache, скорости неземные просто, питон с руби и раньше сосали в плане быстродействия, теперь остались еще дальше позади. У тебя аргументы будут или ты тоже СЛЫШАЛ и ЧИТАЛ НА ХАБРЕ?
>>369413
Я вообще мимо проходил. Но ты давай, продолжай свой аутотренинг.
>скорости неземные
>скрипт
Скрипты все равно не догонят компилируемые языки по производительности, как ты не тужься. Они не для этого сделаны и их выбирают не по этому фактору.
>>369413
Тот хайлоад, о которым ты мечтаешь говоришь на пхп говне никто не пишет и не будет писать сейчас ты начнешь кукарекать про фейсбук, вк
а для местного амазона рельсы лучшее что есть. А теперь иди нахуй, толстяк.
>>369418
> А теперь иди нахуй, толстяк.
червь-пидор > червь-толстяк >>> червь-программист
Имеется такой код:
empty_struct = OpenStruct.new(items: 0, low: 0, high: 0, products: [])
@result = OpenStruct.new(restaurants: empty_struct.clone, systembolaget: empty_struct.clone, export: empty_struct.clone)
>>369429
Разобрался.
@result.systembolaget.send("#{variant.alc_content}+=", product.quantity)
>>369298
Решилось через использование state_machine для управления state'ом.
Дно снова на связи.
Молю о помощи. 2 дня головой о монитор уже бьюсь.
http://stackoverflow.com/search?tab=newest&q=capybara
Суть: при ране тестовых сценариев через капибару требуется запускать хром в инкогнито моде.
Имеется - хром запускается, но в обычном моде — на настройки кладет хуй,
>>369647
Где-то читал, как кто-то жаловался на такую же проблему, решения там не было. Попробуй хромиум, там исходники есть - можно пофиксить.
>>369462
Не прошло и суток, как вылезла новая ошибка: перестала работать парсилка данных с Yandex Market. При попытке
doc = Nokogiri::HTML(open('http://market.yandex.ua/model-spec.xml?modelid=10384313&hid=91019&CMD=-RR%3D0%2C0%2C0%2C0-VIS%3D8070-CAT_ID%3D651600-EXC%3D1-PG%3D10-PF%3D1801946~EQ~sel~5800975-PF%3D2142444694~EQ~sel~x1121255714'))
>>369673
Есть, но для начала его использования нужно иметь уже запущенный проект. Очень хотелось бы включить парсинг в тесты. А nokogiri и без всяких апи прекрасно парсила нужные данные.
>>369674
Так ты каждый раз когда запускал тесты делал запрос на яндекс?
>>369689
Да, 9 товаров за все тесты в общей сложности запрашивалось.
>>367165
В чём суть слима? Я не понимаю. Как и ангуляра.
мимоперекатывался
>>369734
Используй fakeweb для таких тестов. Сделал один раз запрос, получил что тебе нужно, дальше используешь эти данные через fakeweb
Есть модель User и модель Message, в которой два foreign_key: sender_id и receiver_id.
Как одним sql запросом получить всех юзеров, которые сообщались с определенным юзером, отсортированных по наиболее свежим сообщениям: т.е. messages, с одним из полей равным некоторому id, берутся в порядке убывания created_at, и собираются юзеры, на которых указывает оставшееся поле.
>>369798
Спасибо, лучей хаоса тебе:3
>>369850
И на будущее, что делать, если yandex market забанит продакшн сервер?
>>369852
Используй их апи и не превышать ограничения, а не парсит самому.
Учусь в универе, и хочу работать с веб-программированием.
Сейчас изучаю руби и рельсы, всё понятно и нравится, только мучает ощущение, что потом с рельсами хуй где работу найду в своём мухосранске.
Я слегка запутался в этом, что посоветуете, перекатываться в сторону пыха/джавки пока есть время или всё же продолжать учить рельсы и всё будет хорошо?
>>370091
Зайди на hh своего мухосранска и поищи по вакансиям - php, python, а потом руби, и сделай выводы. Если по пхп и пистону еще можно что-то найти, то руби - удел мамкиных борщехлёбов, в продакшене он никому не нужен. В моём городе-миллионнике десятки вакансий по пистону/пыхе, и ни одной по руби.
>>370096
В москве под руби достаточно вакансий, есть даже для стажеров без опыта.
чет походу напряженка с руби. Я сам из тольятти, так даже в самаре нет вакансий. Не говоря уж про хера без опыта. А ведь так приглянулся. Чет я пыха боюсь, и беспричинная неприязнь.
>>370111
Сам из Орла, и тут тоже почти никто не слышал о рубях , хотя на них писать в разы удобнее, чем на том же пхп.
Думаю параллельно начать изучать пхп, тут как раз тредик есть гостеприимный для новичков.
>>370115
даже хз как параллельно то. То туда, то сюда переключаться, это ж жестко.
>>370105
При этом на питоне и пхп нормальную работу можно найти за день.
мимо-раньше-руби-теперь-пхп
Двачую, рубипараша не нужна.
>>370137
> При этом на питоне и пхп нормальную работу можно найти за день.
Ну вообще охуеть.
>>370388
Ты так говоришь, как-будто тебе надо каждый день новую вакансию находить и менять работу. Кому надо, тот найдет.
>>370434
Кому надо, тот найдет работу хоть на брейнфаке.
По факту же работы на руби в мухосрансках примерно столько же, сколько на питоне, пхп-фреймворках и прочих джаваскриптах (expressjs, angular и т.п.). 90% мухосранского IT рынка – это говностудии на джумлах и вордпрессах.
Мухосранских специалистов, которые действительно что-то умеют можно по пальцам посчитать. Остальные заполняют 90% вакансий говностудий, где настраивают плагины для вордпресса и пишут "на jquery".
Помогите с метапрограммированием, плиз.
Есть у меня класс с такими методами: http://pastie.org/private/dn4vmbrhgvs20wtbk4x1sw
Теперь нужно сделать то же самое, но для других классов, например, Job. Я создал класс Importable, от которого буду наследовать существующий класс и Job, но не врубился, как сделать, чтобы в них обоих был метод с разнными переменными.
>>370434
> Ты так говоришь, как-будто тебе надо каждый день новую вакансию находить и менять работу.
В Мухосранске хотя бы одну найти, когда из всего доступного есть только >говностудии на джумлах и вордпрессах.
>>370516
Че ты несешь вообще? Какое метапрограммирование?
Запихни свои методы в модуль, потом делай инклюд в нужных тебе классах.
>чтобы в них обоих был метод с разнными переменными.
вут?
Посоветуйте лучший способ изучить Rails.
Сейчас изучаю по http://railstutorial.ru/
В книги немало положительных моментов - например, приучает к написанию тестов до начала написания кода.
Но совершенно ничего нет по архитектуре проекта. Создаются какие попало контроллеры, потом криво объединяются (как вам идея все статические страницы описывать одним контроллером?).
Оно и понятно, книга для вчерашних php-макак.
А есть что-нибудь с другим подходом? Где разработка рассматривается от общего к частному. Например, чтобы сначала писались контроллеры, потом создавался статический макет будущего приложения, и только потом потом переходили к деталям реализации.
>>370536
>какие попало контроллеры, потом криво объединяются
Давай поподробнее, в чем проблема.
>как вам идея все статические страницы описывать одним контроллером?
Ты считаешь, это плохая идея? Почему?
>Например, чтобы сначала писались контроллеры
В туториале так и происходит. Сначала автор генерирует скаффолды для йоба-эффекта, но потом использует отдельные генераторы для наглядности.
>>370536
Ай за не пизди, в книге хорошие практики в основном, рейлс-вэй так сказать, но в голове остается мало ибо это тупо копиписать туда-сюда. В рельсах вообще мало что остается в голове если только читать всякие уроки. Делай свой йоба-проект.
>>370541
>какие попало контроллеры, потом криво объединяются
>Давай поподробнее, в чем проблема.
Собственно, проблема в этом:
>как вам идея все статические страницы описывать одним контроллером?
А по поводу
>Ты считаешь, это плохая идея? Почему?
Пусть сначала я сделал страницу Help с ответами на вопросы по сайту в рамках контроллера StaticPages. Потом я организовал на ресурсе службу технической поддержки и хочу добавить на страницу Help возможность задавать вопросы в тех. поддержку (как вконтакте). Уже не статическая страница, а весьма интерактивная.
Мне что, просто перенести существующий метод help в новый контроллер и развивать уже его (+ немного поправить маршруты)? Если так и делается, то всё нормально. Я просто не знаю, потому и спрашиваю.
>>370456
2014 год на дворе - мир одной мухосранью не ограничен.
>>370544
>В рельсах вообще мало что остается в голове если только читать всякие уроки.
Ну я стараюсь изучать вывод команды generate для различных ресурсов, чтобы представлять структуру проекта и как всё взаимодействует.
>>370548
>Уже не статическая страница, а весьма интерактивная
Собственно, ты сам и ответил на свой вопрос, - страница теперь нестатическая и ей тогда нечего делать в контроллере для статических страниц.
>>370564
>>370598
Тогда пиздуйте в крупные города. Снимайте там комнату в общаге на окраине и устраивайтесь джуниором на минимальную оплату. Либо работайте на фрилансе за еду, набирайтесь опыта. Третий вариант – пиздовать в мухосранскую вордпресс-студию и там угорать по плагинам и jquery-программированию.
>>370610
> Снимайте там комнату в общаге на окраине и устраивайтесь джуниором на минимальную оплату.
Не вариант. Забрасывать свой личный дом ради туманных перспектив и бомжевания? Нет пути.
> Либо работайте на фрилансе за еду, набирайтесь опыта.
Как я и говорил хуи без опыта там не нужны (что абсолютно правильно), особенно если учесть, что всегда найдутся индусы с опытом, портфолио и просящие всего половину миски риса!
> Третий вариант – пиздовать в мухосранскую вордпресс-студию и там угорать по плагинам и jquery-программированию.
Так и живем.
>>370645
> Как я и говорил
Точнее я говорил про удалёнку, но это верно и для фриланса.
Посоны, никак не могу понять, что же именно происходит на 5 строчке. С алгоритмом разобрался вроде бы, но был бы очень признателен, если мне объяснят это немного проще.
http://pastebin.com/tWKwkCqL
>>370772
> что же именно происходит на 5 строчке
Два значения в массиве обмениваются местам.
>>370772
>arr[index], arr = arr, arr[index]
Это называется параллельное присваивание. Таким образом:
arr[index] = arr и arr = arr[index]
Но если мы напишем прямо так, то arr[index] перезапишется значением arr и мы не сможем назначить arr значение arr[index], т.к. оно уже изменилось.
>>370779
Ну надо же что-то вернуть из метода. Этот массив и возвращается. Просто return не стали писать там.
>>366707
Всем рубиняшки
Есть модель User, которая связана с двумя другими моделями через has_many:
has_many :following_relationships, class_name: "FollowRelationship", foreign_key: :follower_id
has_many :followings, through: :following_relationships
has_many :reviews, dependent: :destroy
>>370945
Я написал такую штуку, но она ругается на отсутствие колонки follow_relationship.follower_id:
Review.joins("INNER JOIN follow_relationships ON follow_relationships.following_id = reviews.user_id").where(follow_relationship: { follower_id: id })
>>370953
Заменил follow_relationship на follow_relationships и вроде заработало.
Подкиньте идей для проекта. учебного
>>370979
У нас есть ВУЗы, в институтах есть деканаты, там декан. У каждого декана есть свой бложек. Ещё можно захватывать другие ВУЗы, и когда захватываешь, забираешь бложек декана. Ещё можно в буфет ходить и там есть.
Анончик, поясни тупому
Имеются юзеры /user/xxxx
где xxx - id юзера
Хочу запилить каждому личный кабинет с блекджеком и шлюхами. Чтобы там отображалась чисто его инфа.
Адрес ЛК - /user/xxxx/lk
В упор не понимаю, как сделать так, чтобы юзер получал только свои данные, а не чужие введя чужой id.
>>371045
>Ставь ограничения типа методов correct_user
Имелось в виду if current_user? ?
>>371047
Он имел в виду
if (@user == current_user)
В проекте используется 2 апи TG и Billogram. Чтобы не ебаться с хешами и жсоном, я решил пойти путём ООП и, короче, запилил ресурсы. http://pastie.org/private/lgskkmg5xdmivkjchbt0iw
То же самое в модуле Billogram. И когда я наследую что-нибудь от этого ресурса и запускаю консоль, то получаю ошибку:
LoadError: Unable to autoload constant Resource, expected bla-bla/lib/tradegecko/resource.rb to define it
Убираю ресурс из модуля Billogram - работает, сучечка! Так вот, как мне решить эту проблему? Наверное, что-то с областью видимости?
А, да, в config/application.rb у меня вот такая конструкция http://pastie.org/private/dobhhtymtoko24boczntqw
>>371118
> А, да, в config/application.rb у меня вот такая конструкция
> http://pastie.org/private/dobhhtymtoko24boczntqw
Wildcardы в свои пути пробовал добавлять?
>>371144
Вот, примерно, что:
config.autoload_paths += Dir[
"#{config.root}/app/models/**/*",
"#{config.root}/app/tradegecko/**/*",
"#{config.root}/lib/tradegecko/**/*",
"#{config.root}/lib/billogram/**/*"
]
Анон, поясни за всю хуйню
Имеецо:
application.html.erb
<% if !current_page? (root_path || regulation_path || test_path || device_path) %>
<% else %>
<%= render 'banner' %>
<% end -%>
rake routes
root GET /(:locale)(.:format) welcome#test
regulation GET (/:locale)/regulation(.:format) welcome#regulation
test GET (/:locale)/test(.:format) welcome#test
device GET (/:locale)/device(.:format) welcome#device
Требуется не рендерить баннер на всех страницах кроме regulation, test , device.
При входе на / ( root ) и /regulation баннер не выводится. Но при входе на /test и /device он отображается.
В чем причина такого поведения рельсов?
>>371184
> В чем причина такого поведения рельсов?
В тебе. Ты используешь || со stringами.
>>371149
Теперь понял, спасибо. С твоим вариантом сразу после "rails c" я вижу "uninitialized constant Tradegecko".
>>371184
>if !current_page? (root_path || regulation_path || test_path || device_path)
Cука, что пиздец. Осильте руби сперва как следует, потом переходите на рельсы. Пиздец уебаны ебучие, в пхп превращаете мои лапмовые рельсы. Идите нахуй.
>>371118
Переместил всё в app/models и убрал хуйню из конфига.
вчера на установку рельсов пришлось потратить часа 4, проблема была в том, что ничего вообще не тянулось с https, только к вечеру до меня дошло о замене на http, на данный момент ощущаю себя дауном.
>>371582
Да у рубигемс какая-то ебота с этим хттпс. То отваливается до закачки, то во время закачки, то вообще тупо висит.
>>371582
У меня была ошибка 503, когда делал gem install rails, через час повторил и все пошло нормально.
>>371748
не знаю, тонны картинок на харде, эта наиболее подходила.
Стековерфлоу нормального ответа не дал, задам здесь:
Репликация данных при помощи гема octopus, бд оракл там блять нету нормальной репликации, только деньги отдавать за голден гейт, блядь, 2 схемы. С настройкой все ок.
А если рассинхрон данных, мне блять нахуй сносить таблицы со слейва и делать бекап с мастера?
Серьезно, остановка приложения не так критична, могу и бекапить у нас до этого мускул мастер-слейв мудацки был настроен и слетала репликация
Алсо я неверен скорее всего в терминах:
Репликация - пишем на мастер и слейв, читаем со слейва
Шардинг - пишем/читаем на мастере, пишем на слейв, со слейва не читаем.
Чтобы не смущать анона: вторая бд для другой группы, чтобы они ее ебали.
Есть годный гайд по деплою?
ищу прон где здоровый качок ебётся с парнем поменьше
они в начале еще целуются и одновременно парень надрачивает качку
>>372485
нахуй гайд! почитай рецепты capistrano - там всё интуитивно понятно.
>>372489
Держи, как раз смотрел недавно: http://goo.gl/VphbWh
Как упростить такую конструкцию плз
<% if file.url.match(/кудах_кукарек/) %>
<%= link_to(file.url, :class=> "кудах_кукарек") do %>
несколько
строк
кода
<% end %>
<% else %>
<%= link_to(file.url, :class=> "покпок_кококо") do %>
несколько
строк
того же кода что и вверху
<% end %>
<% end %>
<%= link_to(file.url, :class=> file.url.match(/кудах_кукарек/) ? "кудах_кукарек" : "покпок_кококо") do %>
несколько
строк
кода
<% end %>
>>372727
Работает!
>>369417
Bydlo не знает, что php уже джва года как компилируется в кеш.
Посовуйте какой опенсорс проектик, куда можно поконтрибьютить.
>>373195
На рельсах или вообще на рубях? Если второе, то на гитхабе есть репозиторий у почти любого гема.
Что по тестированию почитать? Rspec book вообще не заходит, как начинаю читать, так в сон клонит.
>>373203
https://github.com/publify/publify
Вордпресс на рельсах. Говна в коде тоже дохрена по крайней мере раньше так было.
>>373205
А что не понятно? Если не понимаешь, зачем тебе тестировать код - просто пойми. Если понимаешь, то просто прочитай Rsped доки.
>>373215
А хорошие практики где брать? В книге же они наверняка есть.
>>373215
Ну синтаксис там, и все такое. Про доки хорошо сказал, спасибо.
>>373237
Ну так и синтаксис в доках. Хорошие практики тут: http://betterspecs.org/ru/
Больше тестируй модели, меньше тестируй всякую хуйню.
>>373244
Так и делаю, но у меня было странное чувство из-за того, что я не осилил rspec book.
>>373264
Не ссысь, я вообще ни одной книги по программированию не читал.
>>373268
Не ссысь, я вообще ни одной книги по программированию не читал. Так?
>>373264
Не удивительно. В ней просто невероятное количество воды, читать ее незасыпая невозможно. Я все потому что rspec не такая уж сложная штука, что бы для его освоения нужна была целая книга, вот автором и пришлось щедро разбавлять полезную информацию водой.
>>373553
Тогда ты можешь ответить тому куну по-своему.
Поясните за haml/slim
begin
begin
begin
begin
begin
begin
begin
begin
puts "hello, raby!"
end
end
end
end
end
end
end
end
>>373858
сразу видно хаскелиста, можно написать проще: puts "hello ruby"
Поясните в двух словах че надо тестировать?
Рубач, поясни по хардкору, почему RoR не используется в браузерных ММО?
>>374249
Только public methods. Каждую мелочь быстро заебёшься тестировать. Views многие только визуально тестят.
>>374252
> В идеале - все, что пишешь.
Не забудь каждый литерал протестировать, а то мало ли что.
>>374270
> Views многие только визуально тестят
поясни, что значит "визуально"?
>>374295
Заходишь на сайт и смотришь всё ли на месте, всё ли правильных цветов, везде ли правильные надписи итд.
Я для подобных вещей юзаю проверку на 200ый ответ сервера + проверку на то, чтобы в яваскриптах не было ошибок. Норм?
А мы с пациками вообще не тестируем, лол. Нам норм.
>>373853
Использовал то и другое, слим понравился больше, т.к. были какие-то ситуации, в которых я не смог адекватно написать каие-то конструкции в хамле, точно не помню. Алсо, видел пару тестов и слим вроде как быстрее.
Есть модель постов, которая принадлежит к категории. Нужно добавить еще одну модель, которая так же принадлежала бы к категории, но что б эти категории были разные. Как лучше сделать?
Читаю Metaprogramming Rails. Во 2й главе понравилось, как избавляются от одинаковых методов. В своём проекте можно было бы применить подобный рефакторинг, но смущает то, что придётся динамически создавать стандартные методы контроллёра. Для примера:
class RamsController < HardwareController
...
def index
@rams = apply_scopes(@rams).all.page(params[:page])
@filter_values = @rams.filter_values
end
...
end
class HddsController < HardwareController
...
def index
@hdds = apply_scopes(@hdds).all.page(params[:page])
@filter_values = @hdds.filter_values
end
...
>>374441
Если на четвертых рельсах работаешь, почитай про concerns.
Анончики, поясните пожалуйста, есть ли какой-нить гем, который бы построил связи между контроллерами?
Аля rails-erd для моделек.
>>374470
>связи между контроллерами
Есть один модуль, содержащий пару методов и несколько классов. Нужно сделать, чтобы из классов можно было вызывать методы модуля просто по имени, как локальные переменные, вместо ИмяМодуля.имя_метода. Можно сделать через method_missing, но как автоматически добавлять этот код во все классы внутри модуля? Или есть более лучший вариант?
1.9.3-p484 :034 > module Foo
1.9.3-p484 :035?> def wtf
1.9.3-p484 :036?> puts 'sup'
1.9.3-p484 :037?> end
1.9.3-p484 :038?> end
=> nil
1.9.3-p484 :039 > class Bar
1.9.3-p484 :040?> include Foo
1.9.3-p484 :041?> end
=> Bar
1.9.3-p484 :042 > f = Bar.new
=> #<Bar:0xa38e53c>
1.9.3-p484 :043 > f.wtf
sup
=> nil
>>374946
module Foo
def wtf
puts 'hey'
end
class Bar
include Foo
end
end
f = Foo::Bar.new
f.wtf
оно?
>>374947
Да, спасибо! Держи котика.
А ещё скажите, объявлять attr_writer только в целях тестирования (иначе данные будут дёргаться через API, что не очень хорошо) - зашквар?
Рубисты, подскажите.
Имеет ли смысл учить Ruby "для себя"?
Суть такова: знать основы веб-разработки нужно и полезно, это очевидно. Хотя бы с целью создания своего сайтика/бложика. Но насколько хорошо для этого подходит именно Ruby, или быть может он больше по "серьезному" вебу?
>>374965
На чистом руби мало кто пишет сайтики для веба. А фреймворки РоР и Синатра довольно много низкоуровневой возни скрывают для удобства. Если цель - знать как быстро сделать бложик или что-нибудь ещё, то нормально, правда с нулём знаний в вебе придётся получать довольно много сопутствующий знаний, иначе всё будет считаться "магией".
Я бы начал с чего-нибудь, на чём можно писать без использования фреймворков, к примеру, PHP.
>>374999
Верно ли я понял твою мысль, что правильная эволюция будет PHP -> RoR/anyotherseriosframework, а начинать со второго -- практически бессмысленно?
>>375004
Да, понять основы лучше все таки на пхп. Впрочем можно там и остаться. Дохуя работы на всяких Yii
>>375005
>Впрочем можно там и остаться
Pr'атишка, я на твой хлеб не претендую, есичо. Мне чисто для себя -- вести свой уютный сайтик/бложик. В проф. смысле мне больше байтоёбство на с/с++ нравится.
Спасибо все равно
Есть один стартап, неспешно пилится и финансируется уже как год.
Писали вдвоём, сейчас второй прогер съебался в силиконовую долину и я остался один.
Проблема в том, что проект особо не взлетает (в продвижение начальство не умеет), и есть неиллюзорный шанс того, что мне придётся искать работу.
Суть в том, что это был наш первый проект на рельсах, и код, во-первых, пахнет, а, во-вторых, совершенно не покрыт тестами. Это сейчас я начитался умных книжек и проникся, а в начале оба писали говно. Вообщем показывать такое стыдно. Впрочем, в свою защиту скажу, что задачи бизнеса он решает на 100%.
И вот я теперь думаю - взять и отрефакторить в свободное время 4к+ строк кода, покрыв их тестами и всё такое (что мне на самом деле очень лень делать; в проект особо не верю, однако местами есть интересные вещи, которые как раз не стыдно показать), или ссылаться на NDA и в портфолио наклепать чего-нибудь красивого и грамотного, попутно изучая всякие актуальные в вакансиях вкусняки.
Особо говно не кидайтесь, сам понимаю, что редиска.
>>375635
Советов мудрых. Стоит ли рефакторить текущий проект (скорее всего только для портфолио), или лучше чего-нибудь новое пописать по уму, да потрогать те модные слова из вакансий?
>>375633
>4к+ строк кода
Смеешься что ли? Посиди два вечера и все переделай.
>>375633
>4к+ строк кода
Ну это вообще немного, почему бы и нет?!
>>375636
> лучше чего-нибудь новое пописать по уму, да потрогать те модные слова из вакансий?
Сап, /pr/, я кун 17 лвла решил начать постигать суть руби, да и вообще программирования в целом. Только вот есть одно НО,
а именно - никогда не сталкивался программированием. Так вот, реквестирую более-менее опытных рубистов помочь мне в этом нелегком(имхо) деле.
Пишите(плиз) сюда.
Заранее спасибо.
>>376007
Блиан, у тебя по сабжу вообще никак не получается писать?
Ньюфаг, никогда не пробовавший баз данных, перебегает к вам из ньюфаг-треда под обстрел мочей и козявками.
Я индексирую страницы социальной сети и собираю некоторую информацию. Дело в том, что этой информации уже почти гигабайт, и я вдруг понял сегодня после пятисекундного ожидания выполнения банальной операции на моем йоба-ссд, что хранить все это в текстовых файлах - действительно не самая хорошая идея. Я знаю, что мне нужны базы данных. Но я в них нихуя не понимаю, все на примитивном уровне. Я не знаю, как делать правильно. Помоги, пожалуйста, чем можешь.
Бот гуляет по пабликам и собирает следы жизнедеятельности людей в них. Мне нужно, чтобы по определенному пользователю я мог потом получить разом всю информацию, ссылки и что угодно вообще. Если выражать это с помощью ActiveRecord, то User :has_many :post и Posts :belongs_to :user. Но я уже чую, что это операция на гланды через задницу, потому что при добавлении каждого поста мне нужно будет проверять, если ли юзер в базе и создавать его в случае чего. Я не думаю, что это правильный подход. Как минимум. А может я дурак и не понимаю чего. Надеюсь, кто-нибудь меня поймет. Хочу просто узнать, как это сделает белый человек, у которого есть опыт.
>>376083
Бот апи использует или тупо странички парсит?
>что это операция на гланды через задницу
С чего это?
Сядь да разберись с базами, че ты как не пацан?
>>376091
Я пытаюсь сейчас разобраться. Правда. Начинаю понимать. Мне хватит иметь только Posts в атрибутом :owner_id, а выбирать уже с помощью Post.where(owner_id: 123). Но тогда у меня вопрос. Снова тупой. Правильно ли я понимаю, что при пяти миллионах записей в таблице это все тоже ляжет, потому что он каждый раз перебирать будет?
>>376091
И так ли важно, как я собираю данные? API, десять аккаунтов, ровно три запроса в секунду с каждого. Еще впереди прикручивание этого чуда к рельсам вместе с постоянным обновлением базы с другой машины, где я наверняка насосусь вдоволь.
>>376093
>при пяти миллионах записей в таблице это все тоже ляжет, потому что он каждый раз перебирать будет
у тебя очень зачаточные представления о работе баз данных
>>376100
Ну, я же хранил все в текстовом виде. Оно и видно. В общем, с этим надеюсь самостоятельно разобраться, ничего сложного тут нет. Хотелось бы теперь узнать про обновление базы. Бот естественно будет на другой машине. Может, даже не на одной. И мне все это надо без проебов всегда собирать. В секунду около двух тысяч новых записей, иногда пять-шесть тысяч. Каждую секунду слать JSON'ом на сервер данные — это тоже плохая идея ведь? Может, правильнее как-то подключиться к базе? Может, обновлять её не так часто, но огромными порциями?
Есть одна модель, она должна отображать количество подписчиков в твиттере по месяцам. То есть, поля - user_id, followers, date. Как правильнее её назвать?
Руби-бандиты, я разобрался с азами баз данных. Теперь у меня вопрос: при пяти миллионах записей в таблице sqlite поиск по ней длится 3-4 секунды. Будет ли ускорение, если я перекачусь на нормальную базу данных? Какие еще есть способы ускорить все это говно? Я буду гуглить, конечно, и разбираться, но рекомендации анона все равно же помогут очень хорошо.
>>376141
Перекатывайся на mysql / psql и используй индексы.
>>376142
Да, вспомнил, что краешком уха слышал про индексы и накатил миграцию с ними. Вопрос отпал.
Хочу написать какой-нибудь гем, для общего развития и портфолио, но ничего нового придумать не могу.
Может есть у кого идея, чего бы запилить?
Читал, но нихуя не понял: почему где-то двоеточие перед словом, а где-то после?
>>376793
Вот это, например, эквивалентно:
:test => 'test' и test: 'test'
А еще двоеточие перед словом обозначает символ.
Тем временем завтра начинаются курсы с нуля: https://www.coursera.org/course/webapplications
Накидайте идей для веб-аппликейшена, хочу покодить для души, да чего-нибудь хоть чуточку полезного запилить.
Вдохновлен http://www.cronchecker.net/
>>376831
Ты такой нежный, что вдохновлен примитивной парсилкой кроновских задач?
Блядь, всё время мучаюсь. Как найти в каком-нибудь геме на гитхабе объявление определённого метода?
>>376983
Правой кнопкой мыши, затем "Go to declaration".
Рельсаны, решил упороться бутстрапом. Все популярные на гитхабе гемы — это второй бутстрап. Даже twitter-bootstrap-rails, где в README ясно написано, что це есть третий бутстрп, — это второй. Я бы уже сто раз просто въебал CSS-ок из какого-нибудь CDN, но это не Rails-way, наверное.
В общем, как правильно мне подключить Boostrap 3?
Поехавшие ITT. Один на гитхабе ищет объявление метода, другому жиды подсовывают второй бутстрап вместо третьего.
>>377085
Используй Bower. Подключать css/js через гемы это каменный век. https://github.com/42dev/bower-rails в помощь.
>>377089
Нужно больше зависимостей. Bundler мало было, надо bower-парашу тоже приташить.
>>377159
Нет, блять, жди по несколько месяцев, пока обновится гем, который оборачивают нужную тебе либу в которой вчера пофиксили критичный для тебя баг.
>>376939
Да, обещают сразу после этого, т.е. в конце сентября.
Имеется вопрос. Добрался в своем изучение рельсов до деплоя и тут на меня свалился целый зоопарк серверов/СУБД/итд.
1 Для чего везде написано что надо устанавливать в связке (Apache или Nginx) и (phusion passenger или unicorn)? Почему нельзя обойтись только одним сервером?
2 Соответсвенно какие роли какой сервер выполняет.
3 СУБД, какую выбрать: MySQL - вроде с ней работать проще чем с postgresql, но у второй много всяких плюшек, которые мне наверняка не понадобятся. Либо есть еще какой нибудь вариант?
4 ОС, обязательно ли ставить на сервак серверную ОС или десктопная тоже покатит? Пока я накатил себе бубунту 14 лтс.
5 capistrano - так ли он нужен и хорош? Ведь все тоже самое можно реализовать на баше.
картинка для привлечения внимания
>>377604
1. только пума, остальное говно
2. угадай
3. постгрес, а так без разницы, тебе нужно только в общем случае пароль\логин\название_базы_данных\порт
4. любая
5. на баше прост писать надо ещё, а на капистрано уже написали)
вот книжка прочитай, там есть про пупет, вагрант и всё разобрано http://www.amazon.com/Deploying-Rails-Automate-Deploy-Maintain/dp/1934356956/ref=sr_1_1?s=books&ie=UTF8&qid=1407911341&sr=1-1&keywords=rails+deployment
картинка говно, лучше бы бабу запостил
>>377606
1 пуму можно ставить одну и без всяких дополнительных серверов?
2 вроде так: запрос юзере из инета в апач, апач в виртуальную проксю, прокся в пассажир, пассажир рельсам. И в обратную сторону(поправь меня если я не прав). Но зачем тут нужна виртуальная прокся и лишний сервак, ведь можно отправить запрос сразу в рельсы.
3 ок
4 ок
5 то есть если я буду писать скрипт развертывания на баже я потрачу 1ч, а если на капистрано, то 10мин?
За книжку спасибо, почитаю.
зато в моей картинке есть душа
>>377612
1. пума + нжинкс
2. иногда сразу отдастся нгинксом, если это статика, апач не ставь он плохой
5. да
бабу мне запили
>>377613
1 чому именно пума? Я тут погуглил и у пумы только 1 страница на сайте с графиком и пара строк кода по использованию, и пассажира же гораздо больше документации.
уж что нашел
>>377620
Пассажир с нжинксом ставится одной командой и ничего настраивать не надо.
>>377604
Да, с деплоем пиздец какой-то. Сам только недавно впервые деплоил. Мучался 2 дня и в итоге все сделал. Сначала думал, возьму готовые конфиги и всё заработает, но нихуя не вышло, пришлось во всем разбираться самому.
Могу посоветовать эту статью — http://habrahabr.ru/post/213269/ (но там есть ошибки в конфигах) и этот каст — http://railscasts.com/episodes/335-deploying-to-a-vps (можно на рутрекере найти)
Я использовал unicorn + nginx + postgres, устанавливал всё на убунту 14.04, на digitalocean.com. Unicorn и Nginx никак сам не настраивал, брал готовые конфиги, правил в них только пути, с ними все работало искаропки. А вот с capistrano пришлось помучаться и переписать конфиг под себя с нуля. Но оно того стоило, теперь хоть понимаю, как эта херовина работает. Capistrano хорош, многое делает за тебя, но разобраться в нем трудно, так как нихуя нет документации. Такие дела.
Устроился джуном, сказали, что бы переходил на вим. Поясните за его плюсы и зачем он вообще нужен? Накатил конфиг от роботов, но все равно кажется дико неудобным.
>>377812
Дело привычки. В виме удобно работать за ноутбуком, так как достаточно одной клавы и не нужно отвлекаться на мышку, тачпад. Если привыкнуть и правильно настроить конфиг, то можно писать код быстрее, чем на обычных редакторах. Из минусов то, что нужно запоминать дохера команд, а когда долго пишешь, все эти команды начинают путаться в голове и ты начинаешь тупить. Еще из минусов я бы назвал навигацию по файлам, особенно когда их много. Тут я пока не нашел для себя подходящего решения.
>>377812
>сказали, что бы переходил на вим
Охуеть. Я бы их послал нахуй за такое.
>Накатил конфиг от роботов
Зря. Пиши свой, с нуля.
мимо-безработный-вимогосподин
>>377822
Навигация по файлам как раз таки удобная: жму ctrl+p, ввожу имя файла и оно на ходу ищет, еще тесты удобно запускать. А так хз, какая-то хуйня с копипастом, точнее с пробелами, хотя может я неправильно это делаю. в инсерт моде ctrl+shift+v
>>377838
Для копипасты добавляешь это в свой конфиг
set pastetoggle=<F2>
>>377835
Мотивировали это тем, что используют какой-то gnu screen.
>>377843
>gnu screen
Редкостные говноеды, однако. Tmux жи есть.
>>377812
> сказали, что бы переходил на вим
Я бы держался от них подальше.
Начал изучать ваши рельсы. Пока вроде все понятно. Ну относительно.
Добавил новую конструкцию.
bin/rails generate scaffold Genre name:string
>>377810
Спасибо, самому вскоре предстоит нечто подобное, но вместо unicorn буду использовать пуму, как посоветовали выше, или пассажира. И если у тебя все заработало из коробки, то дай ссыль на правильные конфиги Unicorn и Nginx(если что воспользуюсь ими и не буду использовать пуму или пассажира). И еще какой нибудь скрипт для Capistrano, а то их много как то. Или просто скажи какие команды Capistrano мне пригодятся.
Есть вопрос из разряда теоретических. Допустим у нас есть инет-магазин написанный на пыхе, и соответсвенно БД под него. И если мы хотим переписать его на рельсы, то можно ли использовать для этого старую БД или надо делать ее с нуля и пустой, и потом SQL-скриптами заполнять ее со старой?
>>377870
Тут дело не в виме, а в самом факте отсутствия свободы в выборе редактора.
>>378088
Тащемта полная свобода только у фрилансеров. Часто в каком-нибудь говноэклипсе заставляют работать, а IntelliJ IDEA Ultimate Torrent Edition не поставить, печаль.
>>378097
Может там еще заставляют приходить к 9, или запрещают ходить в шортах?
Работать в таких конторах -- себя не уважать.
>>377983
Сервер настроить можно по статье на хабре или по касту - там одинаковая настройка.
Конфиг Nginx – http://pastebin.com/czHqTYiY
Конфиг Unicorn – http://pastebin.com/kCy90Skk
Nginx устанавливаешь через apt-get install, файл /etc/nginx/nginx.conf не трогаешь, удаляешь все файлы из /etc/nginx/sites-enabled/ если они там будут.
В корне rails-проекта создаешь папку shared, кидаешь в нее оба конфига + database.yml с настройками базы данных. В обоих конфигах не забудь указать название приложения. Саму папку игноришь в .gitignore, из этой папки конфиги на сервер будут заливаться через капистрано. (кстати, в качестве хранилища гит-репозиториев удобно использовать bitbucket, так как в нем можно бесплатно создавать приватные репозитории - самое то для деплоя)
Гемы для капистрано и юникорна - http://pastebin.com/HUWmpfj8
Capfile – http://pastebin.com/ddJjE4QW
config/deploy/production.rb – http://pastebin.com/7rcejNiH
config/deploy.rb - http://pastebin.com/8Nq762bx
Конфиги у меня минимальные, в них только самое необходимое, так что думаю, ты разберешься, если что. Еще тебе может помочь эта ссылка - http://capistranorb.com/documentation/getting-started/flow/ - это очередность стандартных тасков капистрано. По сути, когда я пишу свой конфиг, я цепляюсь к этим таскам и делаю свои операции.
Для начала советую запустить капистрано на дефолтном rails-проекте с дефолтным конфигом (указав настройки сервера, само собой), чтобы понять, что капистрано делает по-умолчанию. Капистрано запускается командой cap production deploy, после чего он на сервере должен создать все нужные папки, загрузить приложение в папку releases и установить ссылку current на текущую версию приложения. Потом создаешь у себя папку shared, кидаешь в нее конфиги (nginx, unicorn и database.yml), копируешь мои конфиги капистрано, пушишь, деплоишь и, если тебе повезет, то всё заработает.
Фух, надеюсь, разберешься.
Аноны, выручайте.
Можно ли сделать так, чтобы модуль curses из стандартной библиотеки Ruby работал с юникодом?
Следующий код не даёт даже ввести символы юникода:
Curses.init_screen
@win = Curses::Window.new(Curses.lines,
Curses.cols,
0,
0)
@win.refresh
@win.getstr
Анончики, поясните, пожалуйста:
Решил познать Ruby и RoR, вроде как возможностей много, самое то. Но вот в чем принципиальная разница между Ruby и Python, например? Их вечно ставят в противовес (учитывая, что и там и там есть фреймворк для web разработки ануса). Правильный ли выбор я сделал?
>>378129
Спс, сохранил к себе в заметки, буду разбираться. И можешь запилить свое фейкомыльце? А то в моей мухосрани даже спросить не у кого.
>>378250
Смотря что ты хочешь. Если ты хочешь ебаться в глаза и прочие отверстия в тоем теле, настраивая либы (из овер 9000 либ, которые я пытался юзать, заработала только одна, это был Twython) и окружение для питона, потом еще ебаться с дуализмом версий, проклинаться все, пока пишешь себе websockets-сервер и встречаться с интересными особенностями питона, то тебе, конечно, стоит им заняться. Имхо, питон стоит знать только для общего развития и чтоб с голоду не умереть, потому что найти работу рубисту в России, если ты живешь не в Москве или Питере, очень тяжело.
>>378300
Понятно.
А если сравнивать с другими сферами? Где сейчас перспективнее развиваться - в мобильной разработке или в web?
И насколько мобильные веб приложения "канают" ?
>>378304
Java Enterprise. Ruby on Rails и мобильные разработка — это всё для дешёвых стартапов.
рельсаны, помогите ньюфангу.
Суть такова: пишу новостной сайт, юзер может добавлять новости и к ним же хуярить комеентарии.
Какие правильные будут ассоциации?
User has_many :comments и has_many :news
Comment belongs_to :user belongs_to :news
News has_many :comments belongs_to :user
но мне кажеся я что-то делаю не так.
Рубаны, есть вопрос. И модель и контроллер имеют схожий механизм обратных вызовов например. Так какие действия следует проверять в контроллере, а какие в модели? например у нас есть пользователи и сообщения, которые пользователи могут писать друг другу. И при удалении пользователя я хочу чтобы вместе с ним удалились и все его сообщения, но если эти сообщения были посланы юзеру, который еще не удалил себя, то удалять сообщения не надо. Так вот в какой колбек следует поместить проверку, я больше склоняюсь к контроллеру, так как присутствует больше одной модели. Поясните мне по хардкору, где я не прав.
>>378373
Я бы повесил на after_destroy для модели пользователей.
Посоны. Нужно организовать на страничке вывод консольной команды.
system("ls -a") выводит true
Что нужно сделать, чтоб получить нормальный вывод.
>>378250
Не знаю, в питоне все просто как 3 копейки. И в джанго тоже. Сам создал урл, сам создал темплейт.
В рельсах же хуйня какая-та, которую они называют магией.
Сахар этот, символы какие-то
t.decimal :price, precision: 8, scale: 2
>>378447
Это в питоне пиздец, а в руби это сделано вполне грамотно, а не через @жопу.
>>378447
Ты в чём то прав, тяжело понимать штуки уровня переменных класса, когда сам пишешь на языке без инкапсуляции.
scale: 2 это сокращение от :scale => 2 (ключ => значение ассоциативного массива).
Привет, рубисты. Пишу вам из обезьяньего вольера соседнего треда.
Под сраку лет собрался таки из эникея-недоадмина перекатиться в более перспективную область и не нашел ничего лучшего, чем начать пейсать кот на пыхе. Вот сейчас думаю, не лучше ли что-нибудь другое выбрать, т.к. где-то отговаривают, где-то откровенно смеются, что мечущемуся в поисках самого себя человеку явно не добавляет уверенности.
Расскажите о Ruby немного, пожалуйста, что это, для чего, стоит ли им заниматься человеку, у которого за спиной только лабы на дельфях и отформатированный бейсиком мозг.
Или пошлите меня на хуй. Я не буду настаивать и укачусь откуда пришел.
>>378548
Самый лучший язык в мире.
Что конкретно ты хочешь услышать?
>>378549
>Что конкретно ты хочешь услышать?
Правду, лол.
Области применения, чем отличается от языков-"конкурентов", смежные технологии, желательные для изучения/ознакомления, какие перспективы у изучающего его человека.
>>378548
Годный дружелюбный динамический язык, используется в основном для вэба (рельсы) и в качестве инструмента автоматизации (Chef, тесты, CI).
Я начинал реально учить программирование с Руби, охуенное сообщество, все друг-другу помогают, много хороших книг и ресурсов. Порог вхождения достаточно низкий, но в последствии можно и угореть по хардкору и метапрограммированию.
Правда у меня в городе была лишь 1 вакансия рубиста, это минус, не знаю как в твоём регионе в этом плане. Так что в итоге перешел на жабу, работаю уже 2 года. Руби мне много дал в плане общего развития. Хороший язык для старта и работы на одеске, для сычевания в офисе больше подойдет жабаскрипт, если хочется розовых дилд, или тот же тырпрайз.
В пых слышал, что там херовый гешефт и переизбыток кадров.
>>378553
>Порог вхождения достаточно низкий
Для написания простых программулек для себя может и да.
Но посмотри вакансии в том же ДС - каждая вакансия требует как минимум год промышленного кодинга на рор, так что человек, который только начинает, хер чего сможет добиться в ближайшие год-два изучения.
>>378553
Спасибо, доступно.
Мне, выходит, нужно выбрать фактически первый язык для изучения, плюс чтобы работу с ним найти, т.к. сейчас все очень плохо - в моем городе безработица, а для программиста вообще работу найти проблема, не нужны они здесь. Хочу уехать на вольные хлеба в поисках лучшей жизни и, в перспективе, не возвращаться в это болото никогда. Ну и возраст тоже накладывает свой отпечаток, в том смысле, что время идет, и не хотелось бы его тратить на заведомо бесперспективное направление - нет уже времени изучать что-нибудь просто для интереса, хотелось бы сразу уйти в заведомо профитную область. Отсюда и все сомнения в выборе.
Пишу, может, не всегда понятно и доходчиво, прости, анон.
>>378556
Да я и не стремлюсь к сверхбыстрому получению профитов. Просто пришло понимание, что нужно что-то менять в этой жизни, пока не поздно, и пока выбираю направление. Поэтому и задаю много вопросов - було бы обидно ошибиться в самом начале и потратить впустую время, которого осталось не так много.
>>378558
>було
было
slffx
>>378558
>нет уже времени изучать что-нибудь просто для интереса, хотелось бы сразу уйти в заведомо профитную область
Тогда тебе нужен джаваскрипт. Руби охуенен, но работы действительно немного.
>>378569
>джаваскрипт
Оукей. Но о нем я не имею вообще никакого представления, т.к. не смотрел в его сторону никогда. Смутно понимается что-то вроде эффектов для веб-страниц.
>>378573
Начнешь как раз с эффектов для веб-страниц и верстки. Через год-полтора усердной работы начнешь более-менее понимать всю веб-парашу и сможешь перейти к созданию бэкенда на node или фронтенда на angular. Либо выберешь любой другой язык для бэкенда, джаваскрипт все равно пригодится.
>>378573
>Оукей. Но о нем я не имею вообще никакого представления, т.к. не смотрел в его сторону никогда. Смутно понимается что-то вроде эффектов для веб-страниц.
И сразу нахуй. Не слушай этих петухов. Самый востребованный и оплачиваемый язык в рашке-парашке — это Java. Но если ты действительно хочешь конкурировать со студентотой, дрочить вёрстку, сдвигать влево на 1px, учить каждый день новый framework, то впёрёд, изучай Javascript.
>>378611
Порог вхождения в эту джаву будет явно повыше, чем в js/пыху. Плюс у меня абсолютно нет опыта, незаконченная вышка, и возраст под 30. Кому нужен такой джун, да еще и понаехавший из сибирский пердей?
Я все понимаю, анон, не первый день уже думаю, что изучать, просто стараюсь быть реалистом.
>>378611
Будто изучив джавапарашу не придется конкурировать со студентотой. Новые фреймворки, впрочем, действительно не придется изучать – в джавапараше уже давно ничего нового не происходит. Только унылый энтерпрайз и БИЗНЕС-ЛОГИКА
>>378616
>Будто изучив джавапарашу не придется конкурировать со студентотой.
Порог вхождения выше. Нанимают только в офис, поэтому не будет конкуренции с фрилансерами-доширачниками-из-мухосрансков.
>>378622
Я как раз и есть воннаби-фрилансер-доширачник-из-мухосранска.
>>378615
>Порог вхождения в эту джаву будет явно повыше, чем в js/пыху.
Смотри, ты можешь изучить только Java и пойти на джуна в корпорацию.
Или изучить HTML, CSS, SASS/LESS, вёрстку, Photoshop, Javascript, JQuery, Angular, Node, Ember, Backbone, bootstrap, extjs.
Ну и что же ты выберешь?
>>378622
Хуйню написал, у меня в мухосранске джава
де-факто стандарт для студентоты, а про джаваскрипт вообще три с половиной преподавателя слышали.
>>378629
Лол, перечислил рандомные JS-библиотеки/фреймворки, SASS/LESS который от CSS почти ничем не отличается и, зачем-то, фотошоп, в котором всего-то нужно уметь нарезать картинки из psd – если собираешься работать верстальщиком.
Вы там в своем джаваговне только стандартной библиотекой пользуетесь что-ли? И не изучаете вообще никаких полезных инструментов? Чем же вы там занимаетесь?
>>378633
Дело в том, что с джаваскриптом можно как фрилансить, так и сидеть в офисе. С джаваговном можно только сидеть в офисе. При чем, как правило – в максимально унылом офисе с корпоративными правилами и галстуками в бездушном стойле-опенспейсе – ведь стартапов никто на джаве не делает.
Алсо, на фрилансе долгое время в любом случае придется соревноваться с доширачниками за 100-рублевый заказ – вне зависимости от выбранного языка. Так что лучше начать с офиса, если такая возможность есть – и на фриланс идти уже сформировавшимся, востребованным специалистом с портфолио.
>>378629
Ага, а на Java-джуна от тебя сейчас требуют:
J2SE, J2EE, JSP, JSF, Hibernate и тд
>>378642
>Дело в том, что с джаваскриптом можно как фрилансить, так и сидеть в офисе. С джаваговном можно только сидеть в офисе.
А нахуй фрилансить, объясни? Это говно для индийцев и китайцев.
>ведь стартапов никто на джаве не делает.
Потому что нужна дешёвая рабочая сила, а джава-разработка стоит дорого.
>галстуками
Не иди туда, где есть дресс-код.
>>378646
>J2EE, JSP, JSF, Hibernate и тд
От джуна же требует скорее знания определиния этих слов, а не годы разработки на ней.
>>378548
На курсере стартовал курс "Web Application Architectures" - https://class.coursera.org/webapplications-002 Рассказывается как раз про Ruby on Rails, хотя собственно программирования там практически нет, рассказывается про Rails, про веб-приложения, так что начать можно отсюда. И да, в отличии от большинства курсов на курсере, там материалы по всему курсу доступны сразу же, а не появляются каждую неделю, так что его можно полностью за неделю изучить.
>>378647
>А нахуй фрилансить, объясни?
Чтобы не тратить время на поездку в офис, чтобы работать там где тебе нравится и тогда, когда ты хочешь. Чтобы иметь возможность съебать когда и куда угодно.
>Потому что нужна дешёвая рабочая сила, а джава-разработка стоит дорого.
Разве что в твоем маня-мирке. Стартапов сейчас тысячи, многие из них собирают огромные инвестиции и недостатка в деньгах у них нет.
На джаваговне стартапы не делают, потому что в этом нет никакого смысла. Есть куда более удобные инструменты, которые позволяют экономить время и деньги. Джава же нужна для поддержки легаси и прочей энтерпрайз хуеты.
>>378656
>Стартапов сейчас тысячи, многие из них собирают огромные инвестиции и недостатка в деньгах у них нет.
При этом 95% этих инвестиций уходит на кокаин владельцу стартапа, а разработчикам этого навоза платят как Java-джуну.
>>378656
>Стартапов сейчас тысячи, многие из них собирают огромные инвестиции и недостатка в деньгах у них нет.
>живем в России.
Я помню как мне припекло не так давно, когда узнал, что какой-то чувак на кикстартере сказал что съест тарелку макарон за 10$, или что-то вроде того и собрал порядка 20к.
>>378659
>При этом 95% этих инвестиций уходит на кокаин владельцу стартапа
Маня-мирок.
>>378656
>Потому что нужна дешёвая рабочая сила, а джава-разработка стоит дорого.
>На джаваговне стартапы не делают, потому что в этом нет никакого смысла. Есть куда более удобные инструменты, которые позволяют экономить время и деньги.
Что и требовалось доказать.
>>378665
Это не означает, что разработчикам платят меньше. Это означает, что стартап экономит время и деньги. Типичная маня-логика.
>>378666
>Это не означает, что разработчикам платят меньше.
Посмотри обзор зарплат Java-разработчиков и обзор зарплат разработчиков-скриптопараши и найди разницу.
>>378674
Посмотрел. Заплаты джавапарашников незначительно выше, при этом работы на джаваскрипте больше раза в 2, в том числе на топовые позиции 150к+. Что еще пизданешь?
>>378642
>ведь стартапов никто на джаве не делает
Кстати вспомнил как был в руби-сообществе такой период, когда Руби/Рельсы пиарили как некий божественный стек в противовес уёбищной сложной жабе, а жабу обсирали везде. Типа вот у нас конвеншен овер конфигурейшен, тдд/бдд вся херня. Затем в промежуток 2012-2014 обновляется Play Framework получая все сасс/лесс и тд перделки и свистелки, Спринг меняет владельца и выкатывает тот же конвеншен овер конфигурейшен Спринг Бут и хуеву тучу других дилдаков, выходит жабка 8, новый ЕЕ стек, все кукумберы-хуюмберы идут в народ, грейдлы, розовые дилдаки, no-sql, нашхорн, появляется много всяких связок жабка/скалка + ангуляр/эмбер и тд. Все понимают, что жабе в традиционном понимании постепенно приходит конец, но на горизонте маячит некий сугубо облачно-энтерпрайзно-бэкендный jvm-мутант. Хипсторы начинают писать в твитор #javaCoolAgain. То есть будущее жабы примерно очерчено.
А в руби тем временем полгода идет срач в стиле "консёрны убивают рельсы!!1", и что-то уже нет того запала, который был раньше. Рельсы дохнут под натиском жс и по причине того, что они уже не впереди планеты всей. И что дальше? Раньше читаешь новости - использование руби растет, всё охуенно, ламповые фрики-докладчики на конференциях, интересные идеи, людей всё больше, свет и просвещение идут в массы джава/пыхобыдла, а сейчас всё покатилось в говно, хипстота уходит, стартапы перекатываются на около-жс херню. Через несколько лет руби может последовать за перлом, если не образуется некий новый хайп вокруг чего-то с ним связанного.
Охлол, при чем половина тех вакансий 200к+ – это вообще не джава, а технические директоры, администраторы SAP и одинэсники, для которых знание джавы является скорее приятным дополнением. Остальные вакансии – типичный унылый энтерпрайз. Работа в банке, анализ ДБО и прочий трейдинг. Унылая, в общем, работа, и наверняка с дресс-кодом.
И, как оказалось – ни одной позиции на 200k+ для джавапарашника нет – там одни руководители и прочие директоры по разработке.
>>378683
Да насрать на руби и прочие питоны. С появлением фронтенд MVW фреймворков весь этот рендеринг шаблонов на сервере стал абсолютно бессмысленным, так что место для рубей и питонов осталось разве что на бэкенд. Но и там они нахуй не нужны, так как есть более быстрые и удобные языки для этой задачи.
А джава слишком популярна, чтобы в одночасье вот так взять и умереть, вместе со всей своей энтерпрайз экосистемой. Мутант будет мутировать и дальше, и всегда будут нужны рабы для его обслуживания.
>>378679
>при этом работы на джаваскрипте больше раза в 2
Это потому что на каждой пых-говновакансии требуют джаваскрипт.
>>378700
Это потому что джаваскрипт теперь используется везде. Веб (и фронтенд и бэкенд), мобильные приложения, десктопные приложения с node-webkit. А джавпараша где? Банки, банки, ДБО и ынтерпрайз. Уныние и безысходность.
>>378685
>И, как оказалось – ни одной позиции на 200k+ для джавапарашника нет – там одни руководители и прочие директоры по разработке.
Потому что разработчику никогда столько платить не будут. Разработчик будет всю жизнь смотреть в монитор, читать говнокод, получать средненькую зарплатку и есть доширак.
>>378688
> А джава слишком популярна, чтобы в одночасье вот так взять и умереть, вместе со всей своей энтерпрайз экосистемой.
Clojure — элегантное решение. Посылаем нахуй джаву, но пользуемся всеми её библиотеками и JVM :)
>>378688
Вообще никогда не понимал, зачем на серверную сторону ставят что-то кроме REST-сервиса и зачем нужны все эти скриптоговна когда есть всякие Spray и Jersey.
>>378705
>Это потому что джаваскрипт теперь используется везде. Веб (и фронтенд и бэкенд), мобильные приложения, десктопные приложения с node-webkit.
Делать говносайты на говноязыке: вот что я называю успехом! В ентерпрайзе хоть побольше баблоса отваливают.
>>378705
>Банки, банки, ДБО и ынтерпрайз. Уныние и безысходность.
2014 год ёпта. В большинстве энтерпрайза уже давно внедряется плоская иерархия и люди так же ходят в домашних тапочках, сидят на мягких подушках, курят кальяны в офисе и хранят бухло в ящике, как и во всяких хипстер-стартапах. Всё потому, что это ничего не стоящие понты, но люди предпочтут идти в контору с понтами, а не в "серьезную" дресс-код парашу. Никакой принципиальной разницы между энтерпрайзом и не-энтерпрайзом уже нет, кроме инструментов.
>>378711
Делать современные и кому-то нужные веб-приложения на актуальном языке и новых технологиях. В ентерпрайзе же чистишь говно вилкой за незначительную прибавку. Потом вешаешься на патчкорде в своем кубикле, потому что не видишь никакого результата своей тяжелой работы, пока топ-менеджеры банка ебут элитных шлюх и ездят на спортивных автомобилях.
>>378723
Дресскодеры начали косить под стартапы, потому что в их депрессивную парашу никто не хотел идти работать. Сейчас, вон, даже альфа-банк сделал себе модный хипстерский офис для менеджеров, что уж говорить о программистах.
В большинстве своем джаваконторы остались таким же унылым говном, как и были. Особенно в пределах империи.
>Всё потому, что это ничего не стоящие понты
Да какие понты? Это нормальное отношение к работнику, создание человеческой, домашней атмосферы в офисе. Поэтому туда люди и идут, они просто не хотят быть сраными рабами.
>>378708
>всеми её библиотеками и JVM
И наслаждаемся эксепшонами вида java.org.com.Exceptions.Numeric.DivisionByZero и прочими "радостями" от жвм.
>>378729
>Делать современные и кому-то нужные веб-приложения
Делать современные и никому не нужные веб-приложения, пока владелец стартапа и инвесторы ебут элитных шлюх и ездят на спортивных автомобилях.
Fixed.
>>378740
Мсье разраба6тывает статику или я не понял? JavaScript FTW!
>>378723
>2014 год ёпта. В большинстве энтерпрайза уже давно внедряется плоская иерархия и люди так же ходят в домашних тапочках, сидят на мягких подушках, курят кальяны в офисе и хранят бухло в ящике, как и во всяких хипстер-стартапах.
Согласен. Зацените эту банко-хипстер-парашу: https://rocketbank.ru/pages/man-hunt
>>378737
А зачем ты делишь на ноль? Тебе разве не говорили, что этого делать нельзя? Эксепшоны как раз и нужны чтобы предотвращать конец света.
>>378753
Cмишно, но суть не в этом был.
>>378774
Это не отменяет того, что эксепшоны просто необходимы, тут же не пыхапе какое-нибудь, программа должна работать предсказуемо и безотказно.
>>378791
ДА ТЫ ТУПОЙ ЧТОЛИ, СУКА???!11 ЧЕ ТЫ МЕНЯ БЕСИШЬ-ТО А? ЕСЛИ ПИШУ НА КЛОЖУР, МНЕ ХОЧЕТСЯ НОРМАЛЬНЫЕ ЭКСЕПШОНЫ, А НЕ МАЛАФЬЯ ВИДА ЖАВА.ГОВНО.МОЧА.ПИЗДА.ПИЗДАНЕНАЙДЕНА.
>>378997
Зачем ему сфинкс? Он вроде никаких еба поисков делать не собирается. А даже если и собирается пусть elastic search использует.
>>376083
Бери постгрес, создавай две таблицы, для постов и для юзеров, судя по твоему описанию тебе даже индексы не понадобятся. Я так понимаю скрипт у тебя может работать и без участия рельс, если так лучше используй sequel вместо AR.
SASS vs LESS
Так как с фронтендом мне возиться не с руки, решил использовать для этого гем twitter bootstrap >>377088 но ведь изначально твиттор-бутстрап написан с помошью лесс. А рельсы изначально поставляются с сасс, и не сломается у меня что нибудь из за этих конфликтов?
UPDATE: залез сейчас на сайт twitter bootstrap и там уже написано что и сасс он тоже поддерживает. Но вопрос все равно остается уже просто из любопытства. Какой из препроцессов CSS лучше? С учетом того, что ни один из них я не знаю, а только просмотрел синтаксис, и особых различий не заметил.
>>379020
Да я уже перекатился на AR сто лет назад, кое-как набутстрапил морду и все такое. И как без индексов? Миллионы записей же. Уже десятки миллионов. Две таблицы - суть переизобретение индексов.
Ты мне лучше поясни за БД без рельсов. Мне понравился AR, но впердоливать его, чтобы можно было с БД играться из терминала, чтобы миграции работали и прочее - это только вручную, как я понял, да и вообще как-то не труЪ, вроде. Sequel, говоришь? Ну-у, я присматриваюсь, но не понял, как накатывать миграции и как там прикрутить индексы, например. Кстати, чем он лучше AR, кроме неудобства вкорячивания первого в приложение? И не будет ли подводных камней, если я захочу базу после Sequel отдать AR? А то в случае чего гонять данные туда-сюда будет слегка долго при таком их количестве.
>>379172
> изначально твиттор-бутстрап написан с помошью лесс
> bootstrap-sass
> sass
За тебя уже все зделали, можешь трогать LESS-переменные в SASS-файлах.
>>379193
Т.е. можно одновременно использовать yoba_name.css.scss и yoba_name.css.less?
>>379190
Вопрос с миграциями и индексами снят. Я уже привык к модной хипстерской документации в README.md на гитхабе просто. Впрочем, прятать основные моменты среди соплей и воды, которые могут понадобиться уже совсем позже, тоже не очень хорошо.
>>379195
Одновременно можешь использовать yoba_name.css.scss.less.
Cначала yoba_name пройдет через лесс, потом через сacc, потом станет как обычный css.
Посоны, я к вам за советом по проектированию приложения. Структура такая, будет сайт и десктопное приложение, при этом приложение будет посылать на сайт статистику, а с сайта можно будет управлять этим приложением.
Теперь о предварительной схеме на пикче. У каждого пользователя на странице профиля будет показываться статистика и элементы управления. Обмен информацией будет происходить через вебсокет, и вот это у меня слабое место, так как раньше я не работал с ними. Может вы мне поясните как это сделать правильно. Пока я вижу это так: на стороне сервера будет запущен например вот это вебсокет сервер https://github.com/websocket-rails/websocket-rails и у каждого юзера будет свой канал, на который будут подписаны его десктопные приложения. Или же для каждого юзера надо будет запускать свой отдельный вебсокет сервер?
Ну и еще может кто посоветует что нибудь по вебсокету, например как к нему лучше подцепиться?
>>379326
Пикча отклеилась.
>>379326
>у каждого юзера будет свой канал
>посоветует что нибудь по вебсокету
>https://github.com/websocket-rails/websocket-rails
>>379326
Одного вебсокет сервера будет достаточно, если у тебя там конечно не миллионы юзеров.
Возможно, я просто пока не очень привык. Перекатываюсь с Питона в Руби просто посмотреть. Нет ли проблем с читаемостью синтаксиса? Ведь Питон очень прост и приятно читается, как книжечка. А здесь же миллиард non-alphabet символов, и используются они очень активно. Не C++-параша, конечно, но все-таки.
Вопрос, наверное, так формулируется. А какие у вас относительные впечатления и нет ли проблем с чтением?
>>379190
По-твоему описанию было непонятно собираешься ли ты вообще какие-то запросы к своим данных делать прямо в БД или просто потом засунешь то, что надо в какой-нибудь эластик и будешь уже с ним работать. Так что индексы могли тебе и не понадобиться совсем.
Проблемы с перекатыванием на AR после sequel не будет, можно их хоть одновременно использовать. Дополнительным бонусом к sequel идет то, что по моим бенчмаркам вероятно хуевым он в среднем оказывался в ~10 раз быстрее AR.
>>379655
Вообще, сейчас я интересовался скорее на будущее, потому что мне постоянно приходится выкачивать сотни мегабайт говна, а потом его разбирать. Я думал сначала SQLite использовать, но не захотел шквариться о голый SQL вообще. AR — единственное, что мне было известно из мира ORM. Sequel выглядит правда довольно вкусно.
Теперь о старом. Запросы к базе делаю. @posts = Post.where(uid: params[:uid]), например. В данный момент у меня девяносто миллионов постов на два миллиона уникальных юидов. Не представляю, как без индекса по колонке uid мне выполнить запрос за разумное время, но если ты знаешь какую-то особую магию, то мне будет очень интересно и полезно узнать.
Алсо, мне нужно мою базу постоянно обновлять, потому что бот постоянно собирает все новые и новые данные. Сейчас я просто вручную копирую все, но хотелось бы узнать, как бы со сторонней машины добавлять до миллиона записей в час и не соснуть хуйца.
>>379657
>Не представляю, как без индекса по колонке uid мне выполнить запрос за разумное время
Все ок, тут и правда индекс нужен.
>Алсо, мне нужно мою базу постоянно обновлять, потому что бот постоянно собирает все новые и новые данные. Сейчас я просто вручную копирую все, но хотелось бы узнать, как бы со сторонней машины добавлять до миллиона записей в час и не соснуть хуйца.
Может быть просто ботом подключаться к базе на другой машине и писать данные сразу в нее?
>>379663
Спасибо за внимание, кстати, бро. Я тогда ещё немного поспрашиваю, хорошо?
Удаленное подключение. Это хорошо, я думал об этом. Единственное, надо будет позаботиться, чтобы никакие данные нигде не проебались.
Смотри. У поста есть ID. Ну, не внутренний рельсовый, а тот, который в социальной сети. Есть колонки group_id, topic_id и прочее. Мне нужно для каждого topic_id в каждой group_id получать максимальное значение ID поста. Чтобы бот мог всегда спросить, какой тут и тут был последний пост. Я так понимаю, какой бы хитрый запрос я ни нагуглил, мне нужно ещё какие-то особые индексы делать или даже хуки какие-нибудь, иначе всё равно будет очень много итераций по записям. Не подскажешь, как тут правильно всё сделать? Конечно же, нет никакой гарантии, что записи у меня все отсортированы как надо и я могу просто взять последнюю.
>>379734
Можно попробовать составной индекс на ID, group_id и topic_id, но вообще, по-хорошему, надо бы все через explain прогонять.
мимо-другой-руби-кун
Рубисты, как сохранить данные в контроллере, при этом не сохраняя их в БД? Почему то переменную которую я назначаю через attr_accessor всегда равна nil. Или может их надо сохранять не в контроллере? Я думал про куки, но как то это неправильно.
>>379833
контролер не хранит информацию, можеш сохранять в памяти
Сап, аноны. На трайруби дошёл до места с сортировкой массива. Ради интереса попробовал sort вместо sort! - результат тот же. Для чего тогда нужен восклицательный знак?
>>379870
a = [2, 3, 1]
a.sort
a
>[2, 3, 1]
a.sort!
a
>[1, 2, 3]
>>379870
В руби есть соглашние. Методы, оканчивающиеся ? возвращают булево значение. Методы, оканчивающиеся на ! изменяют значение входного параметра. Без ! метод вернёт значение, не меняя входящий параметр
>>379884
В сессию складывай тогда, потому что при следующем реквесте все равно создается новый инстанс контроллера.
Есть ли какие-нибудь магазины с шаблонами для spree и других ЦМС на руби? Мой сосед крутой дизайнер и верстальщик, а я немного умею рубировать, решили попробовать запилить пару шаблонов и продать их, как думаете, взлетит или лучше не выёбываться и идти на завод?
>>379929
Шаблоны покапают там, где скачал, поставил, работает. Как битрикс или вордпресс. Руби, по крайней мере на текущий момент - это только разработка. Иди рубируй в контору какую-нибудь в нерезиновой/паребрик-сити.
>>379999
>скачал, поставил, работает.
Спри же так и работает.
А в чем отличие плагинов от гемов? И в какой момент меня должно осенить чтобы я код из lib объединил в гем?
В чем разница между self и @, например в примере ниже и то и другое присвоит значение? Или будет разница в использовании внутри модели и контроллера?
def some_method
self.name = new_value
@name = new_value
end
>>380013
@name - это переменная экземпляра класса, а self.name это ты вызываешь метод экземпляра класса name=(value), который и присваивает value к @name.
Бля, как же меня бесят эти "экземпляр класса", "поля", "атрибуты".
>>380017
И да забыл добавить, self.name не будет работать если ты не пропишешь attr_writer или attr_accessor для name, ну или сам напишешь этот метот от руки
>>380018
Так и то и другое присвоит значение переменной name? Где то я читал что в контроллерах надо использовать self.
>>380111
Да. Первое явно, второе - через метод-обертку (setter).
Способ через селф более гибок, т.к. ты можешь написать этот метод самому и добавлять всякие проверки и прочее хуемое, а @name это обычное присваивание. Еще надо уточнить, что self.name будет присваивать значение к переменной name только если он объявлен через attr_writer/attr_accessor (дефолтное поведение). В своих сеттерах ты можешь присваивать значение хоть к @фоо, хоть к @аллаху.
>в контроллерах надо использовать self
ну тут хуй знает, я пасс
Программач, выручай.
Впервые деплою приложение, написанное при помощи Ruby on Rails. Задеплоить необходимо на сервер, который находится в одной локальной сети со мной. На сервере и у меня стоит Windows.
Пишу код в RubyMine, так что решил проделать для этого следующее:
- Установил и запустил на конечном сервере FileZilla Server на 21 порту
- Открыл этот порт для доступа по TCP. Проверил его доступность при помощи telnet'а -- всё нормально
- Создал пользователя в FileZilla Server, установил у него Home Directory
- Попытался подключиться к серверу при помощи FileZilla Client, указав правильный IP-адрес, порт, имя пользователя и пароль -- получаю в ответ следующие надписи:
Status: Connecting to 192.168.0.xxx:21...
Status: Connection established, waiting for welcome message...
Error: Connection timed out
Error: Could not connect to server
Welcome message стандартный, я его не трогал.
В чём может быть дело? Или, может быть, есть более простой способ деплоить приложения, написанные при помощи Ruby on Rails?
>>380173
>На сервере и у меня стоит Windows
>сервер на windows
>спермопроблемы
С какой целью ты его вообще собрался на шиндошс-сервер деплоить? Гайдов по деплою в сети дохера, но не на шиндошс же.
>>380173
Спермопроблемы, сириусли. Накати на сервак хотя бы убунту. И если не хочешь удалять винду, то делай новый сервак.
А писал ты приложение тоже под виндой? Как у тебя гемы хоть заработали?
Сап руби_няши. Задача: надо очищать таблицу каждую минуту, при этом удалять все записи старше 1 часа. Как в рельсах это лучше сделать? Или достаточно написать скрипт, который бы стартовал одновременно с сервером?
>>380173
Ты ведь думаешь, что раз юзал только шиндошс, то на нём всё будет проще? Это не так. Если 97% делают это на линухе, то, пытаясь делать это на винде, ты заработаешь полный геморой. Особенно на руби.
>>380310
Овердохуя способов.
1. Через крон
2. Запускать при запуске рельсового приложения тред который будет раз в минуту просыпаться и удалять записи (с этим вариантом будет осторожнее, если запускаешь много процессов с приложением)
3. Использовать sidekiq/resque/delayed_job. После завершения задачи сразу в ней и создавать новую которая запуститься через минуту.
FAQ
1. C чего мне начать, чтобы стать рубистом?
Отличным началом будет Eloquent Ruby. Для тех, кто хочет сразу понять суть - Why's (Poignant) Guide to Ruby.
Затем читаем Metaprogramming Ruby. На протяжении чтения вы должны писать код, конечно же.
Чтобы не задавать глупых вопросов уровня дибилоида, который не нашёл доки > http://www.ruby-doc.org/core-2.0
Вопросы уровня
>метод чтобы разбить строку в массив
игнорируются, автора исключают из школы и отправляют в биореактор.
Можно пройти руби онлайн - http://tryruby.org/levels/1/challenges/0
Не веришь в свои силы? прочитал уже книжек много и силы свои хочешь познать, сделай - http://rubykoans.com
2. Какой gem посмотреть, чтобы понять как писать код?
Лучше всего посмотреть небольшие gem'ы вроде cancan, devise, camping.
3. Есть ли GUI для руби?
Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО?
Да. Для iOS есть RubyMotion промышленного качества, для Android - весьма тормозной(ну это пока) ruboto. Для WinPhone традиционно ничего нет, но его ценителям не привыкать.
5. Как установить разные версии рубей?
Легко и просто: https://github.com/sstephenson/rbenv
Не так просто: https://rvm.io
6. Что почитать по рельсам?
http://guides.rubyonrails.org
http://ruby.railstutorial.org
Для дотошных читателей есть The Rails 3 Way.
API http://api.rubyonrails.org
7. Хорошие практики по руби и рельсам?
Читаем Rails AntiPatterns, буквально на неделе вышли Rails Best Practices, также неплохо посмотреть Rails Recipes.
8. Ruby/Rails блоги, рассылки и твитторы
IRC каналы на FreeNode: #ruby, #ruby-core, #RubyOnRails, #rails (не очень активен).
Твитторы @rails, @dhh, @yukihiro_matz, @wycats, @tenderlove
Рассылки ruby-core, rails-core, rails-talk
Подкасты:
- http://rubyrogues.com
- http://ruby5.envylabs.com
Скринкасты:
- http://railscasts.com
- https://peepcode.com
- https://www.destroyallsoftware.com
- http://railsforzombies.com
Блоги:
- rubyflow.com - каждый день новости, новые библиотеки, обновления, все дела.
- rubysource.com - читаем интервью, хорошие практики, и безумные сравнения упоротого дибила-индуса на самом деле их пропускаем
- rubyinside.com - новости, туториалы.
- rubyweekly.com
- http://37signals.com/svn
- http://yehudakatz.com
9. Я не могу в английский, что делать, анон?
Идти учить английский, без него тут делать нечего.
10. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - [email protected]
11. какие гемы стоит знать?
capybara, rack, rspec, devise, cancan, simple_form, solr, sinatra, тысячи их.
12. Где можно задать глупые и неочень вопросы?
- здесь
- stackoverflow.com
- в рассылке rails-talk
- оф. форум рубей http://www.ruby-forum.com
13. Как фокнуть\сделать фичу\исправить баг, сложно ли это?
Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
14. В чём писать код?
Vim, Sublime Text 2, TextMate, GNU Emacs. Для особо упоротых энтерпрайз-ребят есть rubymine, плагины к эклипс и нетбинс.
Предыдущие треды:
http://2ch.hk/pr/arch/res/19239.html
http://2ch.hk/pr/arch/res/68985.html
http://2ch.hk/pr/arch/res/80926.html
http://2ch.hk/pr/arch/res/85351.html
http://2ch.hk/pr/arch/res/104148.html
http://2ch.hk/pr/arch/res/128968.html
http://2ch.hk/pr/arch/res/172693.html
http://2ch.hk/pr/arch/res/189237.html
http://2ch.hk/pr/arch/res/207421.html
http://2ch.hk/pr/arch/res/222152.html
http://2ch.hk/pr/arch/res/232635.html
http://2ch.hk/pr/arch/res/238928.html
http://2ch.hk/pr/arch/res/247175.html
http://2ch.hk/pr/arch/res/253533.html
http://2ch.hk/pr/arch/res/260762.html
http://2ch.hk/pr/arch/res/266493.html
http://2ch.hk/pr/arch/res/278287.html
http://2ch.hk/pr/res/313906.html