mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-21 21:36:22 +00:00
WIP creación de sitios
This commit is contained in:
parent
166b549d63
commit
237cfb4a5e
11 changed files with 177 additions and 2 deletions
|
@ -2,3 +2,4 @@ SECRET_KEY_BASE=
|
|||
IMAP_SERVER=
|
||||
DEFAULT_FROM=
|
||||
DEVISE_PEPPER=
|
||||
SKEL_SUTTY=https://0xacab.org/sutty/skel.sutty.nl
|
||||
|
|
7
Gemfile
7
Gemfile
|
@ -53,6 +53,8 @@ gem 'mini_magick'
|
|||
gem 'pundit'
|
||||
gem 'rails-i18n'
|
||||
gem 'rails_warden'
|
||||
gem 'rugged'
|
||||
gem 'validates_hostname'
|
||||
gem 'whenever', require: false
|
||||
|
||||
group :development, :test do
|
||||
|
@ -82,3 +84,8 @@ group :development do
|
|||
gem 'spring'
|
||||
gem 'spring-watcher-listen', '~> 2.0.0'
|
||||
end
|
||||
|
||||
group :test do
|
||||
gem 'database_cleaner'
|
||||
gem 'factory_bot_rails'
|
||||
end
|
||||
|
|
14
Gemfile.lock
14
Gemfile.lock
|
@ -98,6 +98,7 @@ GEM
|
|||
ruby-enum (~> 0.5)
|
||||
concurrent-ruby (1.1.5)
|
||||
crass (1.0.4)
|
||||
database_cleaner (1.7.0)
|
||||
devise (4.6.2)
|
||||
bcrypt (~> 3.0)
|
||||
orm_adapter (~> 0.1)
|
||||
|
@ -127,6 +128,11 @@ GEM
|
|||
actionmailer (>= 4.0, < 6)
|
||||
activesupport (>= 4.0, < 6)
|
||||
execjs (2.7.0)
|
||||
factory_bot (5.0.2)
|
||||
activesupport (>= 4.2.0)
|
||||
factory_bot_rails (5.0.2)
|
||||
factory_bot (~> 5.0.2)
|
||||
railties (>= 4.2.0)
|
||||
fastimage (2.1.5)
|
||||
ffi (1.11.1)
|
||||
font-awesome-rails (4.7.0.4)
|
||||
|
@ -286,6 +292,7 @@ GEM
|
|||
ruby_parser (3.13.1)
|
||||
sexp_processor (~> 4.9)
|
||||
rubyzip (1.2.2)
|
||||
rugged (0.28.2)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
|
@ -344,6 +351,9 @@ GEM
|
|||
unf_ext
|
||||
unf_ext (0.0.7.5)
|
||||
unicode-display_width (1.5.0)
|
||||
validates_hostname (1.0.8)
|
||||
activerecord (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
warden (1.2.8)
|
||||
rack (>= 2.0.6)
|
||||
web-console (3.7.0)
|
||||
|
@ -376,6 +386,7 @@ DEPENDENCIES
|
|||
carrierwave-bombshelter
|
||||
carrierwave-i18n
|
||||
commonmarker
|
||||
database_cleaner
|
||||
devise
|
||||
devise-i18n
|
||||
devise_invitable
|
||||
|
@ -383,6 +394,7 @@ DEPENDENCIES
|
|||
ed25519
|
||||
email_address
|
||||
exception_notification
|
||||
factory_bot_rails
|
||||
font-awesome-rails
|
||||
friendly_id
|
||||
haml-rails
|
||||
|
@ -400,6 +412,7 @@ DEPENDENCIES
|
|||
rails_warden
|
||||
rbnacl (< 5.0)
|
||||
rubocop
|
||||
rugged
|
||||
sass-rails (~> 5.0)
|
||||
selenium-webdriver
|
||||
spring
|
||||
|
@ -407,6 +420,7 @@ DEPENDENCIES
|
|||
sqlite3 (~> 1.3.6)
|
||||
turbolinks (~> 5)
|
||||
uglifier (>= 1.3.0)
|
||||
validates_hostname
|
||||
web-console (>= 3.3.0)
|
||||
whenever
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
class Site < ApplicationRecord
|
||||
include FriendlyId
|
||||
|
||||
validates :name, uniqueness: true, hostname: true
|
||||
|
||||
friendly_id :name, use: %i[finders]
|
||||
|
||||
has_many :roles
|
||||
|
|
9
db/migrate/20190711183726_add_unique_to_site_name.rb
Normal file
9
db/migrate/20190711183726_add_unique_to_site_name.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Los nombres de los sitios son únicos
|
||||
class AddUniqueToSiteName < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
remove_index :sites, :name
|
||||
add_index :sites, :name, unique: true
|
||||
end
|
||||
end
|
|
@ -12,7 +12,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20_190_706_002_615) do
|
||||
ActiveRecord::Schema.define(version: 20_190_711_183_726) do
|
||||
create_table 'roles', force: :cascade do |t|
|
||||
t.datetime 'created_at', null: false
|
||||
t.datetime 'updated_at', null: false
|
||||
|
@ -29,7 +29,7 @@ ActiveRecord::Schema.define(version: 20_190_706_002_615) do
|
|||
t.datetime 'created_at', null: false
|
||||
t.datetime 'updated_at', null: false
|
||||
t.string 'name'
|
||||
t.index ['name'], name: 'index_sites_on_name'
|
||||
t.index ['name'], name: 'index_sites_on_name', unique: true
|
||||
end
|
||||
|
||||
create_table 'usuaries', force: :cascade do |t|
|
||||
|
|
107
doc/crear_sitios.md
Normal file
107
doc/crear_sitios.md
Normal file
|
@ -0,0 +1,107 @@
|
|||
# Crear sitios
|
||||
|
||||
Para que les usuaries puedan crear sitios, vamos a tener el siguiente
|
||||
flujo:
|
||||
|
||||
* Nombre del sitio, en minúsculas, sin puntos.
|
||||
|
||||
* Descripción, una descripción de qué hace el sitio para Sutty y otres
|
||||
usuaries del sitio.
|
||||
|
||||
* Plantilla. Lista de plantillas disponibles, con captura, nombre, link
|
||||
a vista previa, link a autore, licencia y usos posibles (blogs, medios
|
||||
alternativos, denuncias, etc.)
|
||||
|
||||
Tengo mi propio diseño! Explicar que vamos a dar esta posibilidad más
|
||||
adelante, pero que necesitamos financiamiento. Esto permitiría
|
||||
agregar un repositorio o gema de plantilla.
|
||||
|
||||
* Licencia. Elegir la licencia del contenido de un listado con
|
||||
licencias piolas:
|
||||
|
||||
* PPL
|
||||
* CC-BY
|
||||
* CC-BY-SA
|
||||
* CC-0
|
||||
|
||||
* Lugares donde se van a subir los sitios. Por defecto nombre.sutty.nl,
|
||||
otras opciones en un desplegable:
|
||||
|
||||
* Tengo mi propio dominio: Explica que todavía no tenemos esto
|
||||
autogestionado pero que si quieren apoyar el trabajo que hacemos
|
||||
pueden donarnos o ponerse en contacto.
|
||||
|
||||
Más adelante pide los dominios, explica cómo comprarlos en njal.la y
|
||||
qué información poner los DNS para poder alojarlos. Cuando Sutty
|
||||
tenga su propio DNS, indica los NS.
|
||||
|
||||
* Neocities: Explicar qué es neocities y permitir agregar una cuenta.
|
||||
Podríamos varias pero queremos estar bien con neocities y además no
|
||||
tiene mucho sentido tener varias páginas en el mismo host.
|
||||
|
||||
Pedir usuarie y contraseña o API key. Dar link directo a dónde
|
||||
sacar la API key y explicar para qué es.
|
||||
|
||||
**En realidad esta sería nuestra primera opción?**
|
||||
|
||||
* Zip: Descargar el sitio en un archivo zip, proponiendo posibles usos
|
||||
offline (raspberries, etc!)
|
||||
|
||||
Da una URL desde donde se puede descargar el sitio.
|
||||
|
||||
* SSH/SFTP: Explicar que permite enviar el sitio a servidores propios.
|
||||
Permite agregar varios servidores, pide usuario, dominio y puerto.
|
||||
Da la llave pública SSH de Sutty y explica cómo agregarla al
|
||||
servidor remoto. También da un link de descarga para que puedan
|
||||
hacer ssh-copy-id.
|
||||
|
||||
**Esto todavía no**
|
||||
|
||||
* IPFS: Da la opción de activar/desactivar soporte para IPFS.
|
||||
Explica qué es y para qué sirve. Vincula a documentación sobre
|
||||
instalar IPFS de escritorio y cómo pinear el hash de sutty, instalar
|
||||
el companion, etc.
|
||||
|
||||
**Esto todavía no**
|
||||
|
||||
* Torrent: Genera un torrent y lo siembra.
|
||||
|
||||
**Esto todavía no**
|
||||
|
||||
* Syncthing: Explica qué es y da la ID del nodo introductor de Sutty.
|
||||
|
||||
**Esto todavía no**
|
||||
|
||||
* Zeronet: Idem syncthing?
|
||||
|
||||
**Esto todavía no**
|
||||
|
||||
* Archive.org
|
||||
|
||||
**Esto todavía no**
|
||||
|
||||
* Crear sitio!
|
||||
|
||||
## Sitios
|
||||
|
||||
Tenemos un sitio esqueleto que tiene lo básico para salir andando:
|
||||
|
||||
* Gemas de Jekyll
|
||||
* Gemas de Sutty
|
||||
* Gemas de Temas
|
||||
* Esqueleto de la configuración
|
||||
* Directorios base (con i18n también)
|
||||
|
||||
El sitio esqueleto es un repositorio Git que se clona al directorio del
|
||||
sitio. Esto permite luego pullear actualizaciones desde el esqueleto a
|
||||
los sitios, esperamos que sin conflictos!
|
||||
|
||||
## Plantillas
|
||||
|
||||
Las plantillas son plantillas Jekyll adaptadas a Sutty. Vamos a empezar
|
||||
adaptando las que estén disponibles en <https://jekyllthemes.org/> y
|
||||
otras fuentes, agregando features de Sutty y simplificando donde haga
|
||||
falta (algunas plantillas tienen requisitos extraños).
|
||||
|
||||
Las plantillas se instalan como gemas en los sitios, de forma que
|
||||
podemos cambiarla desde las opciones del sitio luego.
|
14
test/factories/rol.rb
Normal file
14
test/factories/rol.rb
Normal file
|
@ -0,0 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :rol do
|
||||
usuarie
|
||||
site
|
||||
rol { 'usuarie' }
|
||||
temporal { false }
|
||||
|
||||
factory :rol_invitade do
|
||||
rol { 'invitade' }
|
||||
end
|
||||
end
|
||||
end
|
7
test/factories/site.rb
Normal file
7
test/factories/site.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :site do
|
||||
name { SecureRandom.hex }
|
||||
end
|
||||
end
|
9
test/factories/usuarie.rb
Normal file
9
test/factories/usuarie.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :usuarie do
|
||||
email { SecureRandom.hex + '@sutty.nl' }
|
||||
password { SecureRandom.hex }
|
||||
confirmed_at { Date.today }
|
||||
end
|
||||
end
|
|
@ -4,8 +4,12 @@ require File.expand_path('../config/environment', __dir__)
|
|||
require 'rails/test_help'
|
||||
require 'open3'
|
||||
|
||||
# rubocop:disable Style/ClassAndModuleChildren
|
||||
class ActiveSupport::TestCase
|
||||
include FactoryBot::Syntax::Methods
|
||||
# Resetear el repositorio a su estado original antes de leerlo
|
||||
#
|
||||
# TODO mover a Site.reset! cuando empecemos a trabajar con git
|
||||
def reset_git_repo(path)
|
||||
Dir.chdir(path) do
|
||||
Open3.popen3('git reset --hard') do |_, _, _, thread|
|
||||
|
@ -15,3 +19,4 @@ class ActiveSupport::TestCase
|
|||
end
|
||||
end
|
||||
end
|
||||
# rubocop:enable Style/ClassAndModuleChildren
|
||||
|
|
Loading…
Reference in a new issue