mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-22 08:36:22 +00:00
usar ruby en lugar de rails :B
This commit is contained in:
parent
fb1bf3500c
commit
32313e595c
21 changed files with 29 additions and 30 deletions
|
@ -50,7 +50,7 @@ module Api
|
|||
# puede ser que haya tardado más de media hora en enviar el
|
||||
# formulario.
|
||||
def cookie_is_valid?
|
||||
return if (site_cookie.try(:[], 'expires') || 0) > Time.now.to_i
|
||||
return if (site_cookie&.dig('expires') || 0) > Time.now.to_i
|
||||
|
||||
@reason = 'expired_or_invalid_cookie'
|
||||
render plain: Rails.env.production? ? nil : @reason, status: :precondition_required
|
||||
|
|
|
@ -13,7 +13,7 @@ class ApplicationController < ActionController::Base
|
|||
rescue_from ActionController::RoutingError, with: :page_not_found
|
||||
|
||||
before_action do
|
||||
Rack::MiniProfiler.authorize_request if current_usuarie.try(:ends_with?, '@' + ENV.fetch('SUTTY', 'sutty.nl'))
|
||||
Rack::MiniProfiler.authorize_request if current_usuarie&.email&.ends_with?('@' + ENV.fetch('SUTTY', 'sutty.nl'))
|
||||
end
|
||||
|
||||
# No tenemos índice de sutty, vamos directamente a ver el listado de
|
||||
|
@ -45,7 +45,7 @@ class ApplicationController < ActionController::Base
|
|||
# corresponde con el idioma de los artículos, porque puede querer
|
||||
# traducirlos.
|
||||
def set_locale(&action)
|
||||
I18n.with_locale(current_usuarie.try(:lang) || I18n.default_locale, &action)
|
||||
I18n.with_locale(current_usuarie&.lang || I18n.default_locale, &action)
|
||||
end
|
||||
|
||||
# Muestra una página 404
|
||||
|
|
|
@ -9,7 +9,7 @@ class PostsController < ApplicationController
|
|||
|
||||
# Las URLs siempre llevan el idioma actual o el de le usuarie
|
||||
def default_url_options
|
||||
{ locale: params[:locale] || current_usuarie.try(:lang) || I18n.locale }
|
||||
{ locale: params[:locale] || current_usuarie&.lang || I18n.locale }
|
||||
end
|
||||
|
||||
def index
|
||||
|
@ -145,7 +145,7 @@ class PostsController < ApplicationController
|
|||
# solicite a le usuarie crear el nuevo idioma y que esto lo agregue al
|
||||
# _config.yml del sitio en lugar de mezclar idiomas.
|
||||
def locale
|
||||
@site.try(:locales).try(:find, -> { I18n.locale.to_s }) do |l|
|
||||
@site&.locales&.find(-> { I18n.locale.to_s }) do |l|
|
||||
l == params[:locale]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -65,7 +65,7 @@ class Deploy < ApplicationRecord
|
|||
stat.bytes = size
|
||||
stat.save
|
||||
|
||||
r.try :success?
|
||||
r&.success?
|
||||
end
|
||||
# rubocop:enable Metrics/MethodLength
|
||||
end
|
||||
|
|
|
@ -23,12 +23,12 @@ class MetadataRelatedPosts < MetadataArray
|
|||
end
|
||||
|
||||
def title(post)
|
||||
post.try(:title).try(:value) || post.try(:slug).try(:value)
|
||||
post&.title&.value || post&.slug&.value
|
||||
end
|
||||
|
||||
# TODO: Traer el idioma actual de otra forma
|
||||
def lang
|
||||
post.try(:lang).try(:value) || I18n.locale
|
||||
post&.lang&.value || I18n.locale
|
||||
end
|
||||
|
||||
# Encuentra el filtro
|
||||
|
|
|
@ -40,6 +40,6 @@ class MetadataSlug < MetadataTemplate
|
|||
|
||||
# Devuelve el título a menos que sea privado y no esté vacío
|
||||
def title
|
||||
post.title.try(:value).try(:to_s) unless post.title.private? && !post.title.try(:value).try(:blank?)
|
||||
post.title&.value&.to_s unless post.title.private? && !post.title&.value&.blank?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,7 +18,7 @@ MetadataTemplate = Struct.new(:site, :document, :name, :label, :type,
|
|||
# Valores posibles, busca todos los valores actuales en otros
|
||||
# artículos del mismo sitio
|
||||
def values
|
||||
site.everything_of(name, lang: post.try(:lang).try(:value))
|
||||
site.everything_of(name, lang: post&.lang&.value)
|
||||
end
|
||||
|
||||
# Valor actual o por defecto. Al memoizarlo podemos modificarlo
|
||||
|
|
|
@ -17,9 +17,8 @@ class Post < OpenStruct
|
|||
#
|
||||
# TODO: Reemplazar cuando leamos el contenido del Document
|
||||
# a demanda?
|
||||
def find_layout(doc)
|
||||
IO.foreach(doc.path).lazy.grep(/^layout: /).take(1).first
|
||||
.try(:split, ' ').try(:last).try(:to_sym)
|
||||
def find_layout(path)
|
||||
IO.foreach(path).lazy.grep(/^layout: /).take(1).first&.split(' ')&.last&.to_sym
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -305,7 +305,7 @@ class Post
|
|||
|
||||
# Procesamos el valor, buscando : como separador de campos que
|
||||
# queremos encontrar y luego los unimos
|
||||
_value = (values.try(:split, ':', 2) || []).map do |v|
|
||||
_value = (values&.split(':', 2) || []).map do |v|
|
||||
# Tenemos hasta tres niveles de búsqueda
|
||||
collection, attr, subattr = v.split('/', 3)
|
||||
|
||||
|
|
|
@ -135,7 +135,7 @@ class PostRelation < Array
|
|||
def build_layout(layout = nil)
|
||||
return layout if layout.is_a? Layout
|
||||
|
||||
site.layouts[layout.try(:to_sym) || :post]
|
||||
site.layouts[layout&.to_sym || :post]
|
||||
end
|
||||
|
||||
# Devuelve una colección Jekyll que hace pasar el documento
|
||||
|
|
|
@ -221,8 +221,8 @@ class Site < ApplicationRecord
|
|||
|
||||
# No fallar si no existe colección para este idioma
|
||||
# XXX: queremos fallar silenciosamente?
|
||||
(collections[lang.to_s].try(:docs) || []).each do |doc|
|
||||
layout = layouts[Post.find_layout(doc)]
|
||||
(collections[lang.to_s]&.docs || []).each do |doc|
|
||||
layout = layouts[Post.find_layout(doc.path)]
|
||||
|
||||
@posts[lang].build(document: doc, layout: layout, lang: lang)
|
||||
end
|
||||
|
@ -288,7 +288,7 @@ class Site < ApplicationRecord
|
|||
attr = attr.to_sym
|
||||
|
||||
posts(lang: lang).flat_map do |p|
|
||||
p.send(attr).try(:value) if p.attribute? attr
|
||||
p[attr].value if p.attribute? attr
|
||||
end.uniq.compact
|
||||
end
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ class Site
|
|||
#
|
||||
# @return Array Formularios disponibles para este sitio
|
||||
def forms
|
||||
@forms ||= data.dig('forms').try(:keys) || []
|
||||
@forms ||= data.dig('forms')&.keys || []
|
||||
end
|
||||
|
||||
# El nombre del formulario está disponible
|
||||
|
|
|
@ -58,7 +58,7 @@ PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
|
|||
#
|
||||
# { uuid => 2, uuid => 1, uuid => 0 }
|
||||
def reorder
|
||||
reorder = params.require(:post).permit(reorder: {}).try(:[], :reorder).transform_values(&:to_i)
|
||||
reorder = params.require(:post).permit(reorder: {})&.dig(:reorder)&.transform_values(&:to_i)
|
||||
posts = site.posts(lang: locale).where(uuid: reorder.keys)
|
||||
|
||||
files = posts.map do |post|
|
||||
|
@ -86,7 +86,7 @@ PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
|
|||
usuarie: usuarie,
|
||||
remove: action == :destroyed,
|
||||
message: I18n.t("post_service.#{action}",
|
||||
title: post.try(:title).try(:value)))
|
||||
title: post&.title&.value))
|
||||
end
|
||||
|
||||
# Solo permitir cambiar estos atributos de cada articulo
|
||||
|
|
|
@ -11,7 +11,7 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
|
|||
|
||||
add_role temporal: false, rol: 'usuarie'
|
||||
|
||||
I18n.with_locale(usuarie.try(:lang) || I18n.default_locale) do
|
||||
I18n.with_locale(usuarie&.lang || I18n.default_locale) do
|
||||
site.save &&
|
||||
site.config.write &&
|
||||
commit_config(action: :create)
|
||||
|
@ -24,7 +24,7 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
|
|||
|
||||
# Actualiza el sitio y guarda los cambios en la configuración
|
||||
def update
|
||||
I18n.with_locale(usuarie.try(:lang) || I18n.default_locale) do
|
||||
I18n.with_locale(usuarie&.lang || I18n.default_locale) do
|
||||
site.update(params) &&
|
||||
site.config.write &&
|
||||
commit_config(action: :update)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<% end %>
|
||||
|
||||
<figcaption class="attachment__caption">
|
||||
<% if caption = blob.try(:caption) %>
|
||||
<% if caption = blob&.caption %>
|
||||
<%= caption %>
|
||||
<% else %>
|
||||
<span class="attachment__name"><%= blob.filename %></span>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
%p= t('.greeting', recipient: @email)
|
||||
- if @resource.try(:unconfirmed_email?)
|
||||
- if @resource&.unconfirmed_email?
|
||||
%p= t('.message', email: @resource.unconfirmed_email)
|
||||
- else
|
||||
%p= t('.message', email: @resource.email)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
= t('.greeting', recipient: @email)
|
||||
\
|
||||
- if @resource.try(:unconfirmed_email?)
|
||||
- if @resource&.unconfirmed_email?
|
||||
= t('.message', email: @resource.unconfirmed_email)
|
||||
- else
|
||||
= t('.message', email: @resource.email)
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
.invalid-feedback{ id: id_for_feedback(*attribute) }
|
||||
- if metadata.required
|
||||
= t('posts.attributes.required.feedback')
|
||||
- metadata.errors.try :each do |error|
|
||||
- metadata.errors&.each do |error|
|
||||
= error
|
||||
|
|
|
@ -1 +1 @@
|
|||
= hidden_field_tag 'post[lang]', post.try(:lang).try(:value)
|
||||
= hidden_field_tag 'post[lang]', post&.lang&.value
|
||||
|
|
|
@ -86,7 +86,7 @@
|
|||
%td
|
||||
= post.date.value.strftime('%F')
|
||||
%br/
|
||||
= post.try(:order).try(:value)
|
||||
= post&.order&.value
|
||||
%td
|
||||
- if @usuarie || policy(post).edit?
|
||||
= link_to t('posts.edit'),
|
||||
|
|
|
@ -13,7 +13,7 @@ class DeployJobTest < ActiveSupport::TestCase
|
|||
assert_not ActionMailer::Base.deliveries.empty?
|
||||
|
||||
site.deploys.each do |d|
|
||||
assert File.exist?(d.try(:path) || d.try(:destination))
|
||||
assert File.exist?(d.respond_to?(:path) ? d.path : d.destination)
|
||||
end
|
||||
|
||||
site.destroy
|
||||
|
|
Loading…
Reference in a new issue