Результаты поиска
Реализация функции "Remember me" в приложении Rails
В моем Rails-приложении есть поле входа с "remember me" checkbox. Пользователи, установившие этот флажок, должны оставаться в системе даже после закрытия браузера. Я отслеживаю, входят ли пользователи в систему, сохраняя их идентификатор в сеансе пользователя.
Но сеансы реализуются в Rails как сеансовые файлы cookie, которые не являются постоянными. Я могу сделать их настойчивыми:
class ApplicationController < ActionController::Base
before_filter :update_session_expiration_date
private
def update_session_expiration_date
options = ActionController::Base.session_options
unless options[:session_expires]
options[:session_expires] = 1.year.from_now
end
end
end
Но это похоже на взлом, что удивительно для такой распространенной функциональности. Есть ли какой-нибудь лучший способ?
Редактировать
Ответ Гарета довольно хорош, но я все равно хотел бы получить ответ от кого-то, кто знаком с Rails 2 (потому что он уникален CookieSessionStore ).
Частые SystemExit в Ruby при совершении HTTP звонков
У меня есть сайт Ruby on Rails, который делает HTTP вызовов к внешней веб-службе.
Примерно раз в день я получаю ошибку SystemExit (stacktrace ниже) email, когда вызов службы не удался. Если я затем попробую точно такой же запрос на моем сайте через несколько минут, он отлично работает. Это происходит с тех пор, как сайт вышел в эфир, и мне не удалось отследить, что вызывает его.
Ruby-это версия 1.8.6, а rails-версия 1.2.6.
У кого-нибудь еще есть эта проблема?
Это ошибка и stacktrace.
В SystemExit произошло /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/fcgi_handler.rb:116:in выход' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/fcgi_handler.rb:116:in exit_now_handler' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/inflector.rb:250:in to_proc' /usr/local/lib/ruby/1.8/net/protocol.rb:133:in называть /usr/local/lib/ruby/1.8/net/protocol.rb:133:in sysread' /usr/local/lib/ruby/1.8/net/protocol.rb:133:in rbuf_fill' /Таймаут usr/local/lib/ruby/1.8/timeout.rb:56:in' /Таймаут usr/local/lib/ruby/1.8/timeout.rb:76:in' /usr/local/lib/ruby/1.8/net/protocol.rb:132:in rbuf_fill' /Readuntil usr/local/lib/ruby/1.8/net/protocol.rb:116:in' / usr/local/lib/ruby/1.8/net/protocol.rb:126:in readline' /usr/local/lib/ruby/1.8/net/http.rb:2017:in read_status_line' /usr/local/lib/ruby/1.8/net/http.rb:2006:in read_new' / usr/local/lib/ruby/1.8/net/http.rb:1047:in запрос' /usr/local/lib/ruby/1.8/net/http.rb:945:in request_get' /usr/local/lib/ruby/1.8/net/http.rb:380:in get_response' / usr/local/lib/ruby/1.8/net/http.rb:543:in начало' /usr/local/lib/ruby/1.8/net/http.rb:379:in get_response'
Как исправить ошибку "Unprocessed view path found" с плагином ExceptionNotifier в rails 2.1?
После обновления веб-сайта rails 1.2 до 2.1 плагин ExceptionNotifier больше не работает, жалуясь на эту ошибку:
ActionView::TemplateFinder::InvalidViewPath: необработанный путь представления найдено: "/path/to/appname/vendor/plugins/exception_notification/lib/../views". Задайте пути просмотра с помощью #append_view_path, #prepend_view_path, или #view_paths=.
Что вызывает это и как я могу это исправить?
Как продать Python в client/boss/person
Когда вас просят создать систему XYZ и вы просите сделать это в Python над PHP или Ruby, какие основные функции вы можете упомянуть, когда они требуют от вас объяснения?
Обучение Ruby на Rails что-нибудь хорошее для Grails?
Моя компания находится в процессе запуска вниз по пути Grails. Причина этого заключается в том, что нынешние разработчики тяжело относятся к Java, но ощущают потребность в языке в стиле MVC для некоторых будущих проектов веб-разработки. Лично я пришел из мира дизайна / юзабилити, но по мере того, как я беру на себя больше ответственности "front-end", я начинаю чувствовать потребность в более интенсивном изучении языка, чтобы я мог кодировать некоторую логику, но особенно интерфейсный код для моего UIs и прочего.
Я пытался попасть в Python/Django лично, но просто никогда не тратил на это слишком много времени. Теперь, когда моя компания находится "jumping" в Grails, я купил " веб-разработку Agile с Rails (3 - е изд-бета)", и я начинаю входить в RoR . Я все еще хотел бы узнать Python в будущем или на стороне, но мой самый большой вопрос-это:
- Должен ли я изучать RoR и иметь более универсальный язык в моем "portfolio", зная, что мои RoR знания будут полезны и для моих потребностей Grails??
-OR-
- Должен ли я просто пропустить RoR и сосредоточиться на изучении Grails, который мне скоро понадобится для работы, и работать над изучением RoR/Django (Ruby/Python) позже?
В основном вопрос вращается вокруг полезности Grails в некорпоративной среде и сходства между Rails и Grails. (и это, пытаясь избежать столетней дискуссии о Python против Ruby (на Rails) :))
Обучение Ruby на Rails что-нибудь хорошее для Grails?
Моя компания находится в процессе запуска вниз по пути Grails. Причина этого заключается в том, что нынешние разработчики тяжело относятся к Java, но ощущают потребность в языке в стиле MVC для некоторых будущих проектов веб-разработки. Лично я пришел из мира дизайна / юзабилити, но по мере того, как я беру на себя больше ответственности "front-end", я начинаю чувствовать потребность в более интенсивном изучении языка, чтобы я мог кодировать некоторую логику, но особенно интерфейсный код для моего UIs и прочего.
Я пытался попасть в Python/Django лично, но просто никогда не тратил на это слишком много времени. Теперь, когда моя компания находится "jumping" в Grails, я купил " веб-разработку Agile с Rails (3 - е изд-бета)", и я начинаю входить в RoR . Я все еще хотел бы узнать Python в будущем или на стороне, но мой самый большой вопрос-это:
- Должен ли я изучать RoR и иметь более универсальный язык в моем "portfolio", зная, что мои RoR знания будут полезны и для моих потребностей Grails??
-OR-
- Должен ли я просто пропустить RoR и сосредоточиться на изучении Grails, который мне скоро понадобится для работы, и работать над изучением RoR/Django (Ruby/Python) позже?
В основном вопрос вращается вокруг полезности Grails в некорпоративной среде и сходства между Rails и Grails. (и это, пытаясь избежать столетней дискуссии о Python против Ruby (на Rails) :))
Почему sqlite3-ruby-1.2.2 не работает на OS X?
Я бегу
- OS X 10.5,
- Ruby 1.8.6,
- Rails 2.1,
- sqlite3-ruby 1.2.2
и я получаю следующую ошибку при попытке сгрести db:migrate на приложение, которое работает найти подключен к MySQL.
грабли прервана! нет такого файла для загрузки -- sqlite3 / database
Почему моя работа Cron не работает должным образом?
У меня есть работа cron на Ubuntu Hardy VPS, которая работает только наполовину, и я не могу понять, почему. Задание представляет собой сценарий Ruby, который использует mysqldump для резервного копирования базы данных MySQL, используемой приложением Rails, которая затем gzipped и загружается на удаленный сервер с помощью SFTP.
Файл gzip создается и копируется успешно, но это всегда нулевые байты. Тем не менее, если я запускаю команду cron непосредственно из командной строки, Она отлично работает.
Это задание cron:
PATH=/usr/bin
10 3 * * * ruby /home/deploy/bin/datadump.rb
Это datadump.rb:
#!/usr/bin/ruby
require 'yaml'
require 'logger'
require 'rubygems'
require 'net/ssh'
require 'net/sftp'
APP = '/home/deploy/apps/myapp/current'
LOGFILE = '/home/deploy/log/data.log'
TIMESTAMP = '%Y%m%d-%H%M'
TABLES = 'table1 table2'
log = Logger.new(LOGFILE, 5, 10 * 1024)
dump = "myapp-#{Time.now.strftime(TIMESTAMP)}.sql.gz"
ftpconfig = YAML::load(open('/home/deploy/apps/myapp/shared/config/sftp.yml'))
config = YAML::load(open(APP + '/config/database.yml'))['production']
cmd = "mysqldump -u #{config['username']} -p#{config['password']} -h #{config['host']} --add-drop-table --add-locks --extended-insert --lock-tables #{config['database']} #{TABLES} | gzip -cf9 > #{dump}"
log.info 'Getting ready to create a backup'
`#{cmd}`
# Strongspace
log.info 'Backup created, starting the transfer to Strongspace'
Net::SSH.start(ftpconfig['strongspace']['host'], ftpconfig['strongspace']['username'], ftpconfig['strongspace']['password']) do |ssh|
ssh.sftp.connect do |sftp|
sftp.open_handle("#{ftpconfig['strongspace']['dir']}/#{dump}", 'w') do |handle|
sftp.write(handle, open("#{dump}").read)
end
end
end
log.info 'Finished transferring backup to Strongspace'
log.info 'Removing local file'
cmd = "rm -f #{dump}"
log.debug "Executing: #{cmd}"
`#{cmd}`
log.info 'Local file removed'
Я проверил и перепроверил все пути, и они верны. Как sftp.yml (учетные данные SFTP), так и database.yml (учетные данные MySQL) принадлежат исполняющему пользователю (deploy) с разрешениями только на чтение для этого пользователя (chmod 400). Я использую 1.1.x версии net-ssh и net-sftp. Я знаю, что они не самые последние, но это то, с чем я знаком в данный момент.
Что может быть причиной сбоя задания cron?
Почему моя работа Cron не работает должным образом?
У меня есть работа cron на Ubuntu Hardy VPS, которая работает только наполовину, и я не могу понять, почему. Задание представляет собой сценарий Ruby, который использует mysqldump для резервного копирования базы данных MySQL, используемой приложением Rails, которая затем gzipped и загружается на удаленный сервер с помощью SFTP.
Файл gzip создается и копируется успешно, но это всегда нулевые байты. Тем не менее, если я запускаю команду cron непосредственно из командной строки, Она отлично работает.
Это задание cron:
PATH=/usr/bin
10 3 * * * ruby /home/deploy/bin/datadump.rb
Это datadump.rb:
#!/usr/bin/ruby
require 'yaml'
require 'logger'
require 'rubygems'
require 'net/ssh'
require 'net/sftp'
APP = '/home/deploy/apps/myapp/current'
LOGFILE = '/home/deploy/log/data.log'
TIMESTAMP = '%Y%m%d-%H%M'
TABLES = 'table1 table2'
log = Logger.new(LOGFILE, 5, 10 * 1024)
dump = "myapp-#{Time.now.strftime(TIMESTAMP)}.sql.gz"
ftpconfig = YAML::load(open('/home/deploy/apps/myapp/shared/config/sftp.yml'))
config = YAML::load(open(APP + '/config/database.yml'))['production']
cmd = "mysqldump -u #{config['username']} -p#{config['password']} -h #{config['host']} --add-drop-table --add-locks --extended-insert --lock-tables #{config['database']} #{TABLES} | gzip -cf9 > #{dump}"
log.info 'Getting ready to create a backup'
`#{cmd}`
# Strongspace
log.info 'Backup created, starting the transfer to Strongspace'
Net::SSH.start(ftpconfig['strongspace']['host'], ftpconfig['strongspace']['username'], ftpconfig['strongspace']['password']) do |ssh|
ssh.sftp.connect do |sftp|
sftp.open_handle("#{ftpconfig['strongspace']['dir']}/#{dump}", 'w') do |handle|
sftp.write(handle, open("#{dump}").read)
end
end
end
log.info 'Finished transferring backup to Strongspace'
log.info 'Removing local file'
cmd = "rm -f #{dump}"
log.debug "Executing: #{cmd}"
`#{cmd}`
log.info 'Local file removed'
Я проверил и перепроверил все пути, и они верны. Как sftp.yml (учетные данные SFTP), так и database.yml (учетные данные MySQL) принадлежат исполняющему пользователю (deploy) с разрешениями только на чтение для этого пользователя (chmod 400). Я использую 1.1.x версии net-ssh и net-sftp. Я знаю, что они не самые последние, но это то, с чем я знаком в данный момент.
Что может быть причиной сбоя задания cron?
OpenID аутентификация в Ruby на Rails
Я неофит с Ruby на Rails, но я создал несколько небольших приложений. В любом случае, я действительно заинтересован в OpenID и хотел бы реализовать аутентификацию OpenID и, возможно, некоторые вещи Sreg в приложении Rails. Все исследования, которые я провел, пришли к статьям, которые устарели или просто не работают для меня. Поскольку я так новичок в Rails, мне трудно отлаживать проблемы таким образом...
Как лучше всего реализовать OpenId в Rails?
Готов ли Ruby на Rails для предприятия?
Есть ли кто-нибудь, кто использует RoR для крупномасштабных, критически важных для бизнеса корпоративных приложений?
Существуют ли другие облегченные веб-фреймворки, основанные на динамических языках, которые люди используют для этих типов приложений?
Если вы не используете эти типы фреймворков приложений, что вас останавливает? Это просто инерция, связанная с любой крупной организацией IT. Являются ли проблемы скорости и стабильности этих структур достаточной проблемой, чтобы они компенсировали улучшение времени цикла разработки?
Что IDE использовать для разработки в Ruby на Rails на Windows?
Возможный Дубликат:
Какие Ruby IDE вы предпочитаете?
Возможный Дубликат:
Какие Ruby IDE вы предпочитаете?
Я вообще-то делал вещи на Microsoft .NET после окончания колледжа почти 2 года назад. Я просто начал смотреть на Ruby на Rails. Итак, какой редактор я должен использовать? Я использую Notepad++ прямо сейчас, но могу ли я получить отладку и т. д. каким-то образом?
Как Вы Защищаете database.yml?
В пределах Ruby на Rails приложения database.yml представляет собой обычный текстовый файл, который хранит учетные данные базы данных.
Когда я развертываю свои приложения Rails, у меня есть обратный вызов после развертывания в моем Capistrano рецепт, который создает символическую ссылку в каталоге приложения /config на файл database.yml. Сам файл хранится в отдельном каталоге, который находится вне стандартной структуры каталогов Capistrano /releases. Я chmod 400 файл, так что он читается только пользователем, который его создал.
- Достаточно ли этого, чтобы заблокировать его? А если нет, то чем еще вы занимаетесь?
- Кто-нибудь шифрует свои файлы database.yml?
Будучи как DRY, насколько это возможно в Ruby на Rails приложение
В настоящее время я использую удивительный плагин attachment-fu для приложения Rails, но как начинающий разработчик я никогда не сталкивался с сценарием, подобным тому, в котором я оказался.
По сути, я использую плагин attachment-fu на двух уровнях.
- Это для пользовательских аватаров в классе user.
- Это разрешить вложения файлов ( PDFs и т. д.) В системе обмена сообщениями.
Мой вопрос заключается в том , какой наилучшей практикой использования было бы в этих ситуациях оставаться DRY , ясным и последовательным.
Очевидно, что нет смысла определять и выполнять плагин в обоих классах, но есть что-то очень странное для меня (возможно, необоснованное) о том, чтобы просто идти вперед и настраивать все это в классе божественного приложения.
Есть ли что-то между ними, или родительский класс-это путь?
Спасибо!
Какие-либо советы по получению Rails для запуска с доступом к бэк-энду?
Я содрогаюсь, чтобы спросить, но мой клиент не может предложить никакого другого решения SQL (или SQL-подобного). Я знаю, что доступ имеет некоторые крючки SQL; достаточно ли их для базового ActiveRecord?
Позже:
Я ценю все предложения использовать другие базы данных, но поверьте мне: я пытался убедить их. Существует список "approved", и в нем нет баз данных SQL. Включение чего-то в список может занять больше года, и этот проект будет завершен через три недели.
Связывание ключевых слов источника и поиска с созданием учетной записи
В рамках процесса регистрации для моего онлайн-приложения я думаю о отслеживании источника и / или ключевых слов поиска, используемых для доступа к моему сайту. Это позволит мне увидеть, что реклама работает и откуда с несколько более тонким зерном, чем Google Analytics.
Я предполагаю, что могу установить какой-то файл cookie с этой информацией, когда люди попадают на мой сайт, но я не уверен, как я буду его получать. Это вообще возможно?
Я использую Rails, но независимое от языка решение (или даже просто указатели на то, где найти эту информацию) будет оценено!
Acts-as-readable Rails проблема плагина
Я использую Intridea в качестве читаемого плагина Rails для системы обмена сообщениями, которую я сейчас создаю. Я определил свой класс сообщений соответственно:
class Post < ActiveRecord::Base
acts-as-readable
end
И все, кажется, работает по плану, но при попытке заставить приложение показывать непрочитанные сообщения в моем представлении сообщений, я сталкиваюсь с проблемами.
Их пример: (я изменил подчеркивания на дефисы из-за проблем с форматированием)
bob = User.find_by_name("bob")
bob.readings # => []
Post.find_unread_by(bob) # => [<Post 1>,<Post 2>,<Post 3>...]
Post.find_read_by(bob) # => []
Post.find(1).read_by?(bob) # => false
Post.find(1).read_by!(bob) # => <Reading 1>
Post.find(1).read_by?(bob) # => true
Post.find(1).users_who_read # => [<User bob>]
Post.find_unread_by(bob) # => [<Post 2>,<Post 3>...]
Post.find_read_by(bob) # => [<Post 1>]
bob.readings # => [<Reading 1>]
Поэтому кажется, что если бы я хотел перечислить количество непрочитанных сообщений, находящихся в почтовом ящике (например, Inbox (39) ), я должен был бы сделать что - то вроде:
<%= Post.find_unread_by(current-user).count %>
Но безрезультатно. Я всегда, кажется, застреваю на простых проблемах просмотра после того, как все установлено. Есть идеи?
Лучшее решение для аутентификации в Ruby на Rails
Я ищу готовое решение, которое можно использовать в моем приложении RoR. В идеале я ищу что-то похожее на проверку подлинности ASP.NET форм, которая обеспечивает проверку email, элементы управления регистрацией и позволяет пользователям сбрасывать свои пароли. Ах да, и легко позволяет мне вытащить пользователя, который в данный момент вошел в приложение.
Я начал просматривать уже написанные фрагменты, но обнаружил, что это действительно сбивает с толку. Я посмотрел на LoginGenerator, RestfulAuthentication, SaltedLoginGenerator, но, похоже, нет ни одного места, где есть отличные учебники или их сравнение. Если есть сайт, который я просто еще не обнаружил, или если есть стандарт де-факто, которым пользуется большинство людей, я был бы признателен за помощь.
WYSIWYG редактор gem для Rails?
Есть ли хороший ruby gem для редактора WYSIWYG, который легко будет работать с приложением rails?
Как представить информацию о кросс-модели в MVC?
У меня есть приложение, построенное с использованием MVC, которое создает представление, которое предоставляет сводную информацию по нескольким моделям. Кроме того, некоторые вычисления выполняются по различным наборам данных.
Нет четкой единой модели (которая, по крайней мере, сопоставляется с таблицей), которая, по-видимому, имеет смысл в качестве отправной точки для этого, поэтому различные сводки извлекаются из способствующих моделей в контроллере, передаются в представление и вычисления выполняются там.
Но это кажется, ну, грязным . Но контроллеры должны быть легкими, не так ли? И бизнес-логика не должна быть в представлениях,так как у меня она присутствует.
Так где же должна быть собрана эта информация? Новая модель, которая не сопоставляется с таблицей? Библиотека function/module? или что-то еще?
(Хотя я рассматриваю это как в основном архитектурный / шаблонный вопрос, я работаю в Rails, FWIW.)
Edit: хорошие ответы на все вопросы и много консенсуса, что обнадеживает. Я "accepted" ответ, который я сделал, чтобы сохранить ссылку на Railscasts в верхней части. Я отстаю в своем просмотре Railscast-что-то, что я буду делать напряженные попытки исправить!
Существует ли задача rake для резервного копирования данных в вашей базе данных?
Существует ли задача rake для резервного копирования данных в вашей базе данных?
У меня уже есть резервная копия моей схемы, но я хочу сделать резервную копию данных. Это небольшая база данных MySQL.
Как мне изящно закрыть веб-сервер Mongrel
Мое приложение RubyOnRails настроено с обычным пакетом дворняг за конфигурацией Apache. Мы заметили, что использование памяти нашего веб-сервера Mongrel может быть довольно большим при определенных операциях, и мы действительно хотели бы иметь возможность динамически выполнять изящный перезапуск выбранных процессов Mongrel в любое время.
Однако по причинам, которые я не буду здесь вдаваться, иногда может быть очень важно, чтобы мы не прерывали дворняжку, пока она обслуживает запрос, поэтому я предполагаю, что простое убийство процесса не является ответом.
В идеале, я хочу послать дворняге сигнал, который говорит: "закончите все, что вы делаете, а затем прекратите, прежде чем принимать какие-либо дополнительные соединения".
Существует ли стандартная техника или лучшая практика для этого?
Ruby / Rails доисторические даты на windows
Работая с датами в ruby и rails на windows, у меня возникают проблемы с датами до эпохи (до 1970 года), выбрасывающими исключения из диапазона. Я попытался использовать оба объекта Time и DateTime , но по-прежнему имею те же проблемы.
Как я могу поддерживать проверку подлинности сертификата клиента SSL?
Я хочу сделать то же, что делает myopenid - после того, как вы вошли в систему, вы можете нажать кнопку, которая генерирует вам сертификат SSL; браузер затем загружает этот сертификат и сохраняет его. Когда вы позже вернетесь к yourid.myopenid.com, Ваш браузер может использовать свой сохраненный сертификат для аутентификации, поэтому вам никогда не понадобится пароль.
Итак, мои вопросы - что требуется для того, чтобы это сработало? Как создать сертификаты? Как я могу подтвердить их, когда они будут представлены мне обратно?
Мой стек составляет Rails на Apache, используя Passenger, но я не слишком разборчив.
XML => HTML с Hpricot и Rails
Я никогда не работал с веб-сервисами и rails, и, очевидно, это то, что мне нужно узнать. Я решил использовать hpricot, потому что он выглядит великолепно. В любом случае, _why был достаточно хорош, чтобы предоставить следующий пример на веб -сайте hpricot :
#!ruby
require 'hpricot'
require 'open-uri'
# load the RedHanded home page
doc = Hpricot(open("http://redhanded.hobix.com/index.html"))
# change the CSS class on links
(doc/"span.entryPermalink").set("class", "newLinks")
# remove the sidebar
(doc/"#sidebar").remove
# print the altered HTML
puts doc
Которая выглядит простой, элегантный, и удобной для тебя такого. Отлично работает в Ruby, но мой вопрос: Как я могу разбить это в rails?
Я экспериментировал с добавлением всего этого к одному контроллеру, но не мог придумать лучший способ назвать его в представлении.
Итак, если бы вы разбирали файл XML из web API и печатали его в nice clean HTML с помощью Hpricot, как бы вы разбили активность по моделям, представлениям и контроллерам, и что бы вы поместили туда?
Есть ли способ объединить именованные области в новую именованную область?
У меня есть
class Foo < ActiveRecord::Base
named_scope :a, lambda { |a| :conditions => { :a => a } }
named_scope :b, lambda { |b| :conditions => { :b => b } }
end
Я хотел бы
class Foo < ActiveRecord::Base
named_scope :ab, lambda { |a,b| :conditions => { :a => a, :b => b } }
end
но я бы предпочел сделать это в стиле DRY. Я могу получить тот же эффект, используя
Foo.a(something).b(something_else)
но это не особенно красиво.
Развертывание подкаталога Git в Capistrano
Мой главный макет ветви выглядит так:
/ <-- верхний уровень
/client <-- исходные файлы desktop client
/server <-- Rails приложение
Все , что я хотел бы сделать, это просто снять каталог /server в моем deploy.rb, но я не могу найти никакого способа сделать это. Каталог /client огромен, поэтому настройка крючка для копирования /server в / не будет работать очень хорошо, ему нужно только снять приложение Rails.
Rails требует RubyGems >= 0.9.4. Пожалуйста, установите RubyGems
Я развертываю в Ubuntu slice на slicehost, используя Rails 2.1.0 (от gem )
Если я попробую mongrel_rails start или script / server, я получу эту ошибку:
Rails requires RubyGems >= 0.9.4. Please install RubyGems
Когда я набираю gem -v , у меня установлена версия 1.2.0 . Любые быстрые советы о том, на что смотреть, чтобы исправить?