Re-add and apply MDL rule MD040

We were following it about half of the time and we even added it to our
former `.mdlrc` file. However, for some reason, MDL doesn't detect this
rule when specified in the `.mdlrc` file, so we didn't notice we weren't
following it in many cases.

Now that we're using a style file to configure MDL, we can enable this
rule again and apply it, since now MDL correctly includes it in its
report.
This commit is contained in:
Javi Martín
2024-06-18 05:28:05 +02:00
parent cf23de2f8b
commit 819485eb80
33 changed files with 232 additions and 229 deletions

View File

@@ -38,7 +38,7 @@ La información a rellenar esta dividida en tres apartados:
Para ayudar a entender como rellenar cada uno de los campos, nos basaremos en un supuesto WebService que recibe un método llamado `:get_habita_datos` con la siguiente estructura:
```
```ruby
{
request: {
codigo_institucion: 12, #Valor estático
@@ -99,7 +99,7 @@ La información a rellenar esta dividida en tres apartados:
Al igual que en el apartado anterior definiremos un ejemplo de respuesta, para ayudar a entender como rellenar cada uno de los campos de esta sección.
```
```ruby
{
get_habita_datos_response: {
get_habita_datos_return: {

View File

@@ -8,7 +8,7 @@ Hay que definir los atributos que se quieran traducir en el modelo. Para ello, h
También deberemos añadir la opción `globalize_accessors` con todos aquellos locales a los que queramos tener acceso. Esta gema generará los métodos `title_en`, `title_es`, etc., y que se usan en la aplicación. Si lo que quieres es incluir **todos** los campos traducidos en **todos** los idiomas definidos en tu aplicación, puedes llamar a `globalize_accessors` sin ninguna opción (tal y como se explica en la [documentación](https://github.com/globalize/globalize-accessors#example)).
```
```ruby
# Suponiendo un modelo Post con attributos title y text
class Post < ActiveRecord::Base
@@ -21,7 +21,7 @@ end
Hay que crear una migración para generar la tabla donde se almacenarán todas las traducciones de ese modelo. La tabla deberá tener una columna por cada atributo que queramos traducir. Para migrar los datos ya almacenados (en la tabla original), hay que añadir la opción `:migrate_data => true` en la propia migración:
```
```ruby
class AddTranslatePost < ActiveRecord::Migration
def self.up
Post.create_translation_table!({
@@ -42,7 +42,7 @@ end
Añadir el módulo `Translatable` en el controlador que vaya a gestionar las traducciones.
```
```ruby
class Post < Admin::BaseController
include Translatable
...
@@ -50,7 +50,7 @@ class Post < Admin::BaseController
Hay que asegurarse de que este controlador tiene las funciones `resource_model` y `resource`, que devuelven el nombre del modelo y el objeto para el que se van a gestionar las traducciones, respectivamente.
```
```ruby
...
def resource_model
Post
@@ -66,7 +66,7 @@ Hay que asegurarse de que este controlador tiene las funciones `resource_model`
Añadir como parámetros permitidos aquellos que estén dedicados a las traducciones. Para eso, el módulo `Translatable` posee una función llamada `translation_params(params)`, a la que se le pasan el parámetro del objeto. A partir de esos parámetros, y teniendo en cuenta los idiomas definidos para ese modelo, la función devuelve aquellos parámetros que contengan un valor.
```
```ruby
# Siguiendo con el ejemplo, en este caso se le pasarían los parámetros params[:post], porque es el
# hash que contiene toda la información.
@@ -86,7 +86,7 @@ Recuerda que, para evitar errores al usar locales como `pt-BR`, `es-ES`, etc. (a
Al formulario que se use para editar las traducciones se le deberá añadir el parámetro oculto que las marca para que se borren:
```
```erb
<%= hidden_field_tag "delete_translations[#{locale}]", 0 %>
```
@@ -96,7 +96,7 @@ También habrá que añadir el link de "Eliminar idioma", que deberá tener:
- un atributo `data-locale` con el valor de `neutral_locale(locale)`.
- la clase `delete-language`.
```
```erb
<%= link_to t("admin.milestones.form.remove_language"), "#",
id: "delete-#{neutral_locale(locale)}",
class: 'delete-language',
@@ -109,7 +109,7 @@ Los estilos de CSS y el resto de clases que se le quieran añadir dependerán de
Para que se generen cuando se restablezca la base de datos. Por ejemplo, para crear un post cuya descripción está traducida:
```
```ruby
section "Creating post with translations" do
post = Post.new(title: title)
I18n.available_locales.map do |locale|

View File

@@ -36,7 +36,7 @@ Una de las caracteríticas que diferencian una API REST de una GraphQL es que co
Las consultas en GraphQL están escritas siguiendo un estándar que presenta ciertas similitudes con el formato JSON, por ejemplo:
```
```graphql
{
proposal(id: 1) {
id,
@@ -140,7 +140,7 @@ La lista de modelos es la siguiente:
<h3 id="recuperar-un-unico-elemento-de-una-coleccion">Recuperar un único elemento de una colección</h3>
```
```graphql
{
proposal(id: 2) {
id,
@@ -166,7 +166,7 @@ Respuesta:
<h3 id="recuperar-una-coleccion-completa">Recuperar una colección completa</h3>
```
```graphql
{
proposals {
edges {
@@ -205,7 +205,7 @@ Respuesta:
Actualmente el número máximo (y por defecto) de elementos que se devuelven en cada página está establecido a 25. Para poder navegar por las distintas páginas es necesario solicitar además información relativa al `endCursor`:
```
```graphql
{
proposals(first: 25) {
pageInfo {
@@ -242,7 +242,7 @@ La respuesta:
Para recuperar la siguiente página, hay que pasar como parámetro el cursor recibido en la petición anterior, y así sucesivamente:
```
```graphql
{
proposals(first: 25, after: "NQ==") {
pageInfo {
@@ -262,7 +262,7 @@ Para recuperar la siguiente página, hay que pasar como parámetro el cursor rec
Esta consulta solicita información relativa a varios modelos distintos en una única petición: `Proposal`, `User`, `Geozone` y `Comment`:
```
```graphql
{
proposal(id: 15262) {
id,
@@ -298,7 +298,7 @@ Existen tres mecanismos principales para evitar este tipo de abusos:
La profundidad máxima de las consultas está actualmente establecida en 8. Consultas más profundas (como la siguiente), serán rechazadas:
```
```graphql
{
user(id: 1) {
public_proposals {
@@ -339,7 +339,7 @@ La respuesta obtenida tendrá el siguiente aspecto:
El principal factor de riesgo se da cuando se solicitan varias colecciones de recursos en una misma consulta. El máximo número de colecciones que pueden aparecer en una misma consulta está limitado a 2. La siguiente consulta solicita información de las colecciónes `users`, `debates` y `proposals`, así que será rechazada:
```
```graphql
{
users {
edges {
@@ -384,7 +384,7 @@ La respuesta obtenida tendrá el siguiente aspecto:
No obstante sí que es posible solicitar información perteneciente a más de dos modelos en una única consulta, siempre y cuando no se intente acceder a la colección completa. Por ejemplo, la siguiente consulta que accede a los modelos `User`, `Proposal` y `Geozone` es válida:
```
```graphql
{
user(id: 468501) {
id

View File

@@ -14,7 +14,7 @@ Si has actualizado una instalación de Consul Democracy a la versión 2.0.0 desd
Así, en primer lugar, tras subir la versión 2.0.0 al servidor de producción, tendrás que ejecutar las tareas de actualización de versión:
```
```bash
RAILS_ENV=production bin/rails consul:execute_release_tasks
```
@@ -26,13 +26,13 @@ Si es así, reincia la aplicación. Si no has recibido este aviso, comprueba que
Una vez hecho esto, deberás abrir una consola de base de datos utilizando un usuario que tenga permisos para crear y modificar extensiones de base de datos:
```
```bash
sudo -u postgres psql -d consul_production
```
Si no usaste el [instalador](https://github.com/consuldemocracy/installer/) para instalar Consul Democracy, es posible que tengas que ejecutar las siguientes consultas de base de datos para garantizar los permisos del usuario de Rails para crear esquemas así como el acceso al esquema de extensiones compartidas:
```
```sql
CREATE SCHEMA shared_extensions AUTHORIZATION <reemplazar_con_usuario_de_rails_de_base_de_datos>;
GRANT CREATE ON DATABASE consul_production TO <reemplazar_con_usuario_de_rails_de_base_de_datos>;
GRANT usage ON SCHEMA shared_extensions TO public;
@@ -40,7 +40,7 @@ GRANT usage ON SCHEMA shared_extensions TO public;
Tanto si usaste el instalador como si no, ejecuta:
```
```sql
ALTER EXTENSION pg_trgm SET SCHEMA shared_extensions;
ALTER EXTENSION unaccent SET SCHEMA shared_extensions;
```
@@ -88,13 +88,13 @@ Si has instalado Consul Democracy usando el instalador y estás usando Certbot p
Una opción es añadir manualmente cada certificado cada vez que creas una entidad. Por ejemplo, para añadir la entidad con subdominio `marte` al dominio `ejemplodesistemasolar.org`, ejecuta:
```
```bash
sudo certbot certonly --nginx --noninteractive --agree-tos --expand -d ejemplodesistemasolar.org,marte.ejemplodesistemasolar.org
```
Si vas a añadir muchos subdominios en distintos momentos, esta tarea puede resultar tediosa. Una alternativa es habilitar cualquier subdominio. Para conseguir esto, deberás tener acceso al panel de administración de tu dominio (DNS) para poder seguir las instrucciones al utilizar bien alguno de los [plugins DNS de Certbot](https://eff-certbot.readthedocs.io/en/stable/using.html#dns-plugins) o la [generación manual del certificado](https://eff-certbot.readthedocs.io/en/stable/using.html#manual) con la siguiente orden:
```
```bash
sudo certbot certonly --manual --agree-tos --expand -d ejemplodesistemasolar.org,*.ejemplodesistemasolar.org
```
@@ -110,7 +110,7 @@ Para disminuir la probabilidad de que los correos enviados por la aplicación se
Si quieres utilizar una configuración de envío de correo electrónico diferente para una entidad, como podría ser una que utilice `jupiter` como subdominio, edita el fichero `config/secrets.yml` de la siguiente manera:
```
```yaml
production:
# (...) Otros secretos
multitenancy: true
@@ -138,7 +138,7 @@ Como primera opción, en el panel de configuración de Twitter/Google/Facebook/W
Y como segunda opción, puedes crear una nueva aplicación de Twitter/Google/Facebook/Wordpress y configurarla para su uso desde el dominio de la nueva entidad. En este caso, deberás añadir la configuración de esta aplicación al fichero `config/secrets.yml`. Por ejemplo, si administrases una entidad con el subdominio `saturno`, edita el fichero de esta manera, rellenando la información de aquellos servicios que estés utilizando:
```
```yaml
production:
# (...) Otros secretos
multitenancy: true
@@ -172,7 +172,7 @@ Cuando la funcionalidad de multientidad está activada, Consul Democracy añade
Así, es posible sobrescribir los estilos para una entidad específica añadiendo a alguna hoja de estilos en la carpeta `app/assets/stylesheets/custom/`:
```
```css
.tenant-urano {
// Estilos que solamente se aplican a Urano
}
@@ -180,7 +180,7 @@ Así, es posible sobrescribir los estilos para una entidad específica añadiend
Para cambiar los colores en una determinada entidad de forma sencilla, puedes utilizar variables de CSS; su uso aparece documentado en el fichero [app/assets/stylesheets/custom/tenants.scss](https://github.com/consuldemocracy/consuldemocracy/blob/master/app/assets/stylesheets/custom/tenants.scss). Por ejemplo, para utilizar tonos de verde en los colores principales de la entidad con subdominio `urano`, puedes escribir:
```
```css
.tenant-urano {
--brand: #350;
--brand-secondary: #173a00;