Giter VIP home page Giter VIP logo

trabajofinal's Introduction

Descripción del proyecto. Apuntes importantes a tener en cuenta

Configuración de entorno antes de ejecutar app en localhost

Dentro la carpeta del proyecto corro la sequencia de comandos en siguiente orden:

$ bundle install
$ rails db:migrate

db/seed.rb <- revisar y completar categorías

$ rails db:seed

Luego, hay que configurar secret token. Copiar y pegar en config/secrets.yml:

$ rails secret

Despues es necesario configurar APIs para redes sociales. Ver archivo config/initializers/devise.rb, linea 251:

config.omniauth :facebook, "KEY", "SECRET"
config.omniauth :twitter, "KEY", "SECRET"
config.omniauth :linked_in, "KEY", "SECRET"

Por útlimo, configrar Mailer en config/environments/$RAILS_ENV.rb:

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address:              'smtp.gmail.com',
    port:                 587,
    domain:               'localhost:3000',
    user_name:            '[email protected]',
    password:             'password',
    authentication:       'plain',
    enable_starttls_auto: true
  }
$ rails server

Otras cosas a tener en cuenta:

Para cambiar tema de Bootstrap, revisar ficheros:

app/assets/stylesheets/application.css.scss
app/assets/stylesheets/project.css.scss
app/assets/javascripts/application.js

Para actualizar imagenes y miniaturas de Paperclip:

$ rails paperclip:refresh CLASS=Aviso

Mecanismos principales de la app y arquitectura

La aplicación permite crear usuarios de 2 tipos de cuentas. Uno para publicar (anunciante) y otro para contactarse con anunciantes. Según quien corresponda se habilitan ciertas funciones. Por ejemplo, solo anunciante puede crear un aviso.

El mecanismo de roles se basa en 3 modulos:

  • Devise
  • CanCanCan
  • Rolify

Devise esta ampliado por un controlador User::Registrations que mantiene registro con email. Por otro lado, por un controlador Omniauth_callbacks cuya función es mantener callbacks para proveedores de OmniAuth

Funcionamiento de Mailer

El Mailer esta configurado por un controlador y un pseudo-modelo. Ambos se llaman Communicate

Al enviar mensaje desde la pagina, se ejecuta un POST en forma remota y lo procesa controlador (respuesta JS):

def create
  @communicate = Communicate.new(communicate_params)

  respond_to do |format|
    if @communicate.save
      format.js

      CommunicateMailer.send_aviso_message(@communicate).deliver_now
    else
      format.json { render json: @communicate.errors, status: :unprocessable_entity }
    end
  end
end

Para configurar Mailer mirar archivo: app/mailers/communicate_mailer.rb

class CommunicateMailer < ApplicationMailer
  default from: '[email protected]'

  def send_aviso_message(communicate)
    @sender = User.find(communicate.sender_id)
    @publisher = User.find(communicate.publisher_id)
    @aviso = Aviso.find(communicate.aviso_id)
    @message = communicate.message

    @url  = 'http://example.com/login'
    subject = "#{@sender.name} te mando un mensaje"
    mail(to: @publisher.email, subject: subject)
  end
end

trabajofinal's People

Watchers

James Cloos avatar Victor Szelagowski avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.