Diaspora Installation / Debian / Wheezy official
https://wiki.diasporafoundation.org/Installation/Debian/Wheezy?db=postgres&mode=development
*Database: PostgreSQL
*Running mode: Development
Diaspora Installation / Debian / Jessie official
https://wiki.diasporafoundation.org/Installation/Debian/Jessie?db=postgres&mode=development
*Database: PostgreSQL
*Running mode: Development
Get the source - Diaspora
$ git clone https://github.com/diaspora/diaspora.git $ cd diaspora
Configuration
Copy files
$ cp config/database.yml.example config/database.yml $ cp config/diaspora.yml.example config/diaspora.yml
Bundle
It's time to install the Ruby libraries required by Diaspora
$ gem install bundler $ bin/bundle install --with postgresql
Database setup
Double check your config/database.yml looks right and run:
$ bin/rake db:create db:schema:load $ DB=postgres bin/rake db:create db:schema:load // Especificánde la DB. $ DB=postgres bin/rake db:schema:load // Cuando ya tenemos la db creada.
Start Diaspora
$ ./script/server // It's time to start Diaspora: $ DB=postgres ./script/server // Especificándo la base de datos, para saltarse algunas notificaciones.
Server diaspora running
$ run -p 3001 // Usando otro puerto, 3000 el predeterminado
Instalación de RedSur? desde los repositorios de cenditel
$ git clone https://mayaguaray.cenditel.gob.ve/desarrollo/scm/git/redsur.git
Hay que crear los ficheros diaspora.yml y database.yml a partir de los .example que ya vienen por defecto.
En el database.yml modificar el nombre de la base de datos y el usaurio:
postgres: &postgres adapter: postgresql host: localhost port: 5432 username: redsur_desarrollo password: 123456 encoding: unicode
Además especificar que se va a trabajar con postgresql:
common: &common # Choose one of the following #<<: *mysql <<: *postgres
y tambien especificar la db development:
development: <<: *combined database: redsur_desarrollo
Configurar url
En diaspora.yml modificar la URL para que las imágenes que se guardan en la base de datos tengan la dirección especificada.
Pondremos la dirección donde correra nuestro servidor local, ejemplo:
url: "http://192.168.12.xxx:3000"
Desactivar el captcha
## Enable captcha (default=true) ## Set this to false if you don't want to use captcha for signup process. enable: false
Otros...
Al momento de hacer el:
$ gem install bundler $ DB=postgres bundle install // Para que no de error con mysql $ bin/bundle install --with postgresql // Opcional al primero
Puede presentar problemas con la instalación del Mysql por lo que se puede comentar esa línea en el Gemfile.
ENV['DB'] ||= 'mysql' #gem 'mysql2', '0.3.18' if ENV['DB'] == 'all' || ENV['DB'] == 'mysql' gem 'pg', '0.18.1' if ENV['DB'] == 'all' || ENV['DB'] == 'postgres'
Especificar la versión de {{{rvm}} a usar
$ rvm use 2.2 // Para usar el juego de gemas específico para nuestro proyecto, ya que fue la version que instalamos. $ DB=postgres bin/rake db:migrate RAILS_ENV=development // Creando los esquemas en la db, sobre todo si se agregó un nuevo modelo al esquema, alguna modificación. $ DB=postgres bundle exec rake db:migrate RAILS_ENV=development // Saltar error de migracion si es necesario, spring, otros...
Creando un nuevo modelo
Se agregó un nuevo modelo que corresponde a las Areas de Texto de las Poll: poll_text_area.rb
Este modelo tiene una relación uno-a-muchos (has_many -- belongs_to) con el modelo Poll.rb (el cual, a su vez, tiene la misma relación con el modelo StatusMessage?.rb.)
Comando para crear los modelos
$ DB=postgres rails generate model PollTextArea text:text
Luego modificar el modelo creado.
Generar la migración necesaria para crear asosioaciones entre la instancia creada y su raíz.
$ DB=postgres rails g migration AddPollTextAreaToPoll poll:belongs_to $ DB=postgres rails g migration AddPollToPollTextArea poll:belongs_to $ DB=postgres bin/rake db:migrate:status // Chequear las migraciones realizadas, cuales se levantaron y cuales estan pendientes o fallaron $ DB=postgres bin/rake db:migrate RAILS_ENV=development // Para levantar las migraciones creadas, si hay conflictos, se puede borrar el campo de la tabla y volver a migrar, por lo general poll_id from polls.
Además se modificaron otros modelos.
El controlador status_messages_controller.rb recibe de publisher_view.js (backbone) los parámetros de los controles (p.ej. las areas de texto) a partir de los cuales debe crear las instancias de los modelos (p.ej. el modelo en rails para las areas de texto) que tienen la relación uno-a-muchos (has_many -- belongs_to).
Generar la migración necesaria para agregar el area de texto a las tablas correspondientes
$ DB=postgres rails g migration AddPollTextAreaToPoll poll:belongs_to $ DB=postgres rails g migration AddPollToPollTextArea poll:belongs_to
Añadiendo nuevo atributo al profile
$ DB=postgres rails g migration AddIsgroupToProfiles
Modificar la nueva migracion en /db/migrate --> xxxxxxxxxxxxxx_add_isgroup_to_profiles.rb
class AddIsgroupToProfiles < ActiveRecord::Migration def change add_column :profiles, :isgroup, :boolean end end
$ DB=postgres rails g migration AddFrontimageToProfiles
class AddFrontimageToProfiles < ActiveRecord::Migration def change add_column :profiles, :front_image, :string end end
$ DB=postgres bin/rake db:migrate RAILS_ENV=development
$ DB=postgres bin/rake db:migrate:status // Chequear las migraciones realizadas, cuales se levantaron y cuales estan pendientes o fallaron $ bin/rails db:rollback STEP=X // Para moverse entre los estados de las migraciones donde X es el numero a retroceder
Desactivar la confirmacion via mail de las cuentas creadas
(app/models/user.rb) Editar el fichero
devise :confirmable, :token_authenticatable, :database_authenticatable, :registerable...
Quítale el :confirmable de modo que quede así:
devise :token_authenticatable, :database_authenticatable, :registerable.... devise :confirmable, :token_authenticatable, :database_authenticatable, :registerable...
$ gem uninstall <gem-name> // Desinstalar una gema específica, a veces hay conflictos entre versiones de gemas a usar en el proyecto y las gemas instaladas.
Desactivar aspectos predeterminados de los usuarios
En app/controllers/registrations_controller.rb comentar linea 16
#@user.seed_aspects
Borrar usuario de la db Para borrar los registros del usuario en la tabla users y en people, queda guardado registro en diaspora_handle.
data_base=# DELETE FROM users WHERE username='sbolivar'; data_base=# DELETE FROM people WHERE diaspora_handle='user@192.168.130.150:3000';
Clave publica Michal Papis
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB8 //
Gema de autenticación
Para el rest se implementará la autenticación con "tokens" mediante la gema (devise_token_auth)
In Gemfile
# Authentication gem "devise_token_auth"
postrequest.py #! coding: utf-8 import httplib, urllib import json params = json.dumps("utf8":"✓", "authenticity_token":"", "user":"email":"dieciocho@quince.org", "username":"dieciocho", "password":"123456", "password_confirmation":"123456"}, "commit":"Sign up","profile":"first_name":"JorgeJORGE", "last_name":"RedondoREDONDO", "gender":"M", "bio":"Bio de prueba más bio", "searchable":"true", "location":"Mérida", "nsfw":"true", "public_details":"false", "tag_string":"#cría #cultivo", "date":"year":"1979", "month":"10", "day":"4") headers = "Content-Type": "application/json", "Accept": "*/*"} host = "192.168.12.156" port = 3000 conn = httplib.HTTPConnection(host,port) conn.request("POST", "/users", params, headers) response = conn.getresponse() print "Response: " print response.status, response.reason, print "Body: " print response.read() conn.close()
Agregando el nuevo campo phone al profile del user
$ DB=postgres rails g migration AddPhoneToProfiles
Editamos el diaspora/db/migrate/20161121193410_add_phone_to_profiles.rb
class AddPhoneToProfiles < ActiveRecord::Migration def change add_column :profiles, :phone, :string end end
Luego migramos...
$ DB=postgres bin/rake db:migrate RAILS_ENV=development
Chequeamos las migraciones...
$ DB=postgres bin/rake db:migrate:status
Si realizó correctamente la migración nos mostrará...
. . . up 20160307142216 Cleanup handles up 20160327103605 Add author id index to participations up 20161121193410 Add phone to profiles
Y en la tabla Profiles de la db debe aparecer el campo:
phone | character varying
Ficheros para las traducciones
diaspora/config/locales/diaspora
Ejemplos para las traducciones de los nuevos campos:
en.yml:1077: phone: "Phone number" es.yml:957: phone: "Número telefónico"
Trabajando con las tags
Las tags no deben tener espacios en blanco y deben comenzar en minúscula, esto para la inserción desde csv, si se hace desde la web, el sistema convierte a minúscula cualquier mayúscula.
Edición de plantillas
app/assets/templates/profile_sidebar_tpl.jst.hbs // Bloque izquierdo del Profile de user.
app/assets/templates/profile_header_tpl.jst.hbs // Bloque derecho del Profile de user.
postrequest.py primera versión funcional para las pruebas
#!/usr/bin/env python # -*- coding: utf-8 -*- import httplib, urllib import json params = json.dumps({"utf8":"✓", "authenticity_token":"", "user":{"email":"nbaez@mail.com", "username":"nbaez", "password":"123456", "password_confirmation":"123456"}, "commit":"Sign up","profile":{"first_name":"nelevis", "last_name":"baez", "gender":"F", "bio":"Bio de prueba", "searchable":"true", "location":"Mérida", "nsfw":"false", "public_details":"false", "tag_string":" #postrequest #prueba", "date":{"year":"2000", "month":"11", "day":"11"}}}) headers = { "Content-Type": "application/json", "Accept": "*/*"} host = "192.168.120.130" port = 3000 conn = httplib.HTTPConnection(host,port) conn.request("POST", "/users", params, headers) response = conn.getresponse() print "Response: " print response.status, response.reason, print "Body: " print response.read() conn.close()
Registro corto
#!/usr/bin/env python # -*- coding: utf-8 -*- import httplib, urllib import json params = json.dumps({"utf8":"✓", "authenticity_token":"", "user":{"email":"user@mail.com", "username":"sbolivar", "password":"123456", "password_confirmation":"123456"}}) headers = { "Content-Type": "application/json", "Accept": "*/*"} host = "192.168.120.130" port = 3000 conn = httplib.HTTPConnection(host,port) conn.request("POST", "/users", params, headers) response = conn.getresponse() print "Response: " print response.status, response.reason, print "Body: " print response.read() conn.close()
Pendientes:
-En profile/edit --> fecha de registro del ente de apoyo, date year top 2003, subir hasta 2016/2017 o más.