Ответы пользователя по тегу Ruby gems
  • Как задать количество хранимых бекапов гем backup?

    @sunnmas Автор вопроса
    Ruby
    backup-4.2.0\lib\backup\storage\cycler.rb:

    def cycle!
            Logger.info 'Cycling Started...'
    
            packages = yaml_load.unshift(package)
            Logger.info "packages.count: #{packages.count}"
            excess = packages.count - keep.to_i
            Logger.info "excess: #{excess}"
    
            if excess > 0
              packages.pop(excess).each do |pkg|
                Logger.info "pkg.time: #{pkg.time}"
                begin
                  Logger.info "pkg.no_cycle: #{pkg.no_cycle}"
                  remove!(pkg) unless pkg.no_cycle
                rescue => err
                  Logger.warn Error.wrap(err, <<-EOS)
                    There was a problem removing the following package:
                    Trigger: #{pkg.trigger} :: Dated: #{pkg.time}
                    Package included the following #{ pkg.filenames.count } file(s):
                    #{ pkg.filenames.join("\n") }
                  EOS
                end
              end
            end
    
            yaml_save(packages)
          end


    [2018/02/15 10:12:26][info] Storing '/var/www/site/backup/2018.02.15.10.12.02/backup.tar.enc'...
    [2018/02/15 10:12:27][info] Cycling Started...
    [2018/02/15 10:12:27][info] packages.count: 1
    [2018/02/15 10:12:27][info] excess: -14
    [2018/02/15 10:12:27][info] Storage::Local Finished!
    [2018/02/15 10:12:27][info] Cleaning up the package files...

    Почему то видит только один бекап...

    Выяснилось то что каждый раз при деплое удалялся файл Local.yml. В этом файле записано какие бекапы уже делались. В общем свой косяк.
    Ответ написан
    Комментировать
  • Каким поисковым гемом вы пользуетесь?

    sunspot обертка для solr. На продекшн еще не запускал. Но в девеле показывает себя хорошо и гибко
    Ответ написан
    Комментировать
  • Как сделать URL с датой разделенной слэшами?

    config/routes.rb
    get '/мой/адрес/:day/:month/:year/:title', :to => 'mycontroller#myaction', :as => :date_url

    /views/mycontroller/myaction.html.haml
    = link_to 'Моя статья', date_url_path(:day=> day, :month => month, :year => year, :title => title)
    Ответ написан
    4 комментария
  • Как формат файла конфига backup gem?

    @sunnmas Автор вопроса
    Ruby
    backup -h
    Commands:
    backup check # Check for configuration errors or warnings
    backup generate:config # Generates the main Backup configuration file
    backup generate:model -t, --trigger=TRIGGER # Generates a Backup model file.
    backup help [COMMAND] # Describe available commands or one specific...
    backup perform -t, --triggers, --trigger=TRIGGER # Performs the backup for the specified trigg...
    backup version # Display installed Backup version

    backup generate:config
    Generated configuration file: '/home/deployer/Backup/config.rb'.

    backup check
    # Check for configuration errors or warnings
    [2015/12/01 10:45:45][info] Configuration Check Succeeded.
    Ответ написан
    Комментировать
  • Как задать спрайт after псевдоэлементу?

    @sunnmas Автор вопроса
    Ruby
    Инкулдим миксин в псевдоэлемент лейбла (файл с галкой ok.png)
    @import 'compass'
    @import "compass/utilities/sprites"
    
    $icons-layout:smart
    @import "grey/icons/*.png"
    @include all-icons-sprites
    ...
    label.boolean.checked:after
    	@include icons-sprite(ok)

    compass-style.org/help/tutorials/spriting
    раздел Selector Control
    Ответ написан
    Комментировать
  • Как ускорить рендеринг вложенных полей simple_fields_for?

    @sunnmas Автор вопроса
    Ruby
    В общем я нашел решение!! Оно было на гитхабе в разделе bug reports репозитория simple_form.
    What is the expected slowdown of using SimpleForm?
    Там мистер nashby в марте этого года написал примерно следующее:
    SimpleForm spends a lot of time for trying to translate hints and placeholders for inputs

    Соответственно подставив везде placeholder: false, hint: false где только можно. Получил ускорение с 6 секунд до 780ms.
    Имейте ввиду у себя в приложениях ;)
    Ответ написан
    2 комментария
  • Как вставить рекапчу в подтверждение email?

    @sunnmas Автор вопроса
    Ruby
    Забыл)
    routes.rb:

    devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks", 
    		:registrations => "users/registrations", 
    		:confirmations => "users/confirmations" }
    Ответ написан
    Комментировать
  • Как отключить проверку javascript для части полей формы simple_form?

    @sunnmas Автор вопроса
    Ruby
    Решил разбить форму на части. Получилось 4 формы. Сначала не хотел действовать этим способом, т.к. не хотел чтобы в угоду интерфейса поменялась бизнес логика контроллера. Но все оказалось достаточно приемлемым. Количество маршрутов не изменилось и количество экшенов не изменилось. Это хорошо.
    Старый маршрут:
    get		'/настройки', :to=> 'cabinet/user#edit', :as => :edit_user

    Новый маршрут:
    get		'/настройки/:tab', :to=> 'cabinet/user#edit', :as => :edit_user

    Логика вьюхи. Ранее она содержала все поля, доступные для редактирования, теперь в зависимости от параметра рендерит соответствующий паршиал:
    %h1= @page_title = "Настройки профиля"
    - if params[:tab] == "основные"
    	- @tab = :common
    - elsif params[:tab] == "география"
    	- @tab = :geo
    - elsif params[:tab] == "уведомления"
    	- @tab = :notify
    - elsif params[:tab] == "интерфейс"
    	- @tab = :interface
    - else
    	- @tab = :common
    = render partial: "/cabinet/settings/tabs"
    = simple_form_for current_user, :url => update_user_path, :html => {:multipart => true} do |f|
    	- if @tab == :common
    		= render partial: "/cabinet/settings/form_common", locals: {f: f}
    	- if @tab == :geo
    		= render partial: "/cabinet/settings/form_geo", locals: {f: f}
    	- if @tab == :notify
    		= render partial: "/cabinet/settings/form_notify", locals: {f: f}
    	- if @tab == :interface
    		= render partial: "/cabinet/settings/form_interface", locals: {f: f}
    	= f.button :submit, "Сохранить изменения"
    	= hidden_field_tag :tab, params[:tab]


    Все эти формы сабмитятся на один и тот же маршрут, который не изменился.
    Логика экшена претерпела изменения:
    Было:
    def update
    		bla(bla(bla))
    		redirect_to edit_user_path
    	end

    Стало:
    def update
    		bla(bla(bla))
    		redirect_to edit_user_path(:tab=>params[:tab])
    	end

    Для всех полей модели сделал валидные значения по умолчанию. Получилось, что запись User в базе при создании валидна. Поэтому логика валидаций в модели не изменилась. Как вам такое решение? Как бы сделали вы?
    Ответ написан
  • Как отрендерить partial из контроллера?

    @sunnmas Автор вопроса
    Ruby
    Итого получилось.
    Контроллер. Экшен для отдачи полей детализации
    def category_details
    		@item = Item.new
    		@item.category = params[:id]
    		render 'details_form', layout: false
    	end

    details_form
    <%= simple_form_for @adv do |f| %>
    логика, которая в зависимости от @item.category, генерит нужные поля с помощью хелперов simple_form
    <% end %>

    <i>JavaScript:</i>
    	$('#поле с выбором категории').change(function(){
    		$('#item_details').empty();
    		$.get('/cabinet/category/'+$(this).val()+'/details_form', {},
    			function(data){
    				$(data).children("[type != hidden]").appendTo('#item_details');
    			}
    		);
    	});

    #item_details - контейнер для дополнительных полей в основной форме. При выборе категории, очищаются ранее загруженные дополнительные поля. Потом шлется запрос. Получаем html с формой, у которой отбираем сердцевину с видимыми элементами(.children("[type != hidden]")). Вставляем в контейнер.

    В логике генерации полей был задействован хелпер fields_for, а в модель товаров было добавлено accepts_nested_attributes_for, для принятия полей дочерней модели.
    Спасибо за помощь, ребята)
    Ответ написан
    Комментировать
  • Как подружить backup и fog?

    @sunnmas Автор вопроса
    Ruby
    Да, он установился, но первые попытки его использовать окончились ошибками:271c52cc15254842b2944a64a77d8a9d.png

    Но потом я стал понимать суть проблемы:
    Backup is a system utility for Linux and Mac OS X, distributed as a RubyGem, that allows you to easily perform backup operations.
    Ответ написан
    Комментировать
  • Как запустить resque:scheduler под Windows?

    @sunnmas Автор вопроса
    Ruby
    с поставленными задачами справился гем clockwork/ Он замечательно работает с resque. и запускается под windows
    Ответ написан
    Комментировать
  • Как создать и заполнить связанные выпадающие списки на Rails?

    @sunnmas Автор вопроса
    Ruby
    пока получилось методом костыля:
    <% cities = City.all.map{|city| [city.name, city.id]}%>
    <%= select_tag(:city_id, options_for_select(cities)) %>
    <% for city in cities %>
    <%= select_tag("district_id_"+city[1].to_s, 
    		options_for_select(District.where(:city_id => city[1]).map{|d| [d.name, d.id]})) %>
    <% end %>

    Это создало список городов и кучу списков районов
    Далее разруливаем в браузере:
    <script>
    	$("[name ^= district_id]").hide();
    	$("[name = district_id_1]").show();
    	$("[name = city_id]").change(function(){
    		cur_district = $("[name = 'adv[district_id]']");
    		cur_district.attr("name",cur_district.attr("id"));
    		$("[name ^= district_id]").hide();
    		$("[name = district_id_"+$(this).val()+"]").
    				attr("name","adv[district_id]").show();
    	});
    </script>
    Ответ написан
  • Как правильно использовать yandex-money-sdk gem в rails?

    Я использую RoR и гем по ссылке https://github.com/yandex-money/yandex-money-sdk-ruby.
    Читаю доку, раздел: Payments from bank cards without authorization
    Там три шага. После третьего имею статус ext_auth_required, во входящем параметре acs_uri получаю ссылку, на которую нужно послать post (прочитал здесь https://tech.yandex.ru/money/doc/dg/reference/proc...). Теперь мне нужно каким-то образом редиректится на acs_uri методом POST. Каким образом мне это сделать. В общем вопрос в том, что делать дальше после описанных 3 шагов? Инструкция кончается, а платеж еще не прошел.
    Ответ написан
    2 комментария