Iloo

https://iloo.wordpress.com

Archivos por Etiqueta: plugin

Arch: Google Chrome sonido entrecortado

Arch-Linux

Definitivamente después del trabajo, clases, la novia y los amigos (no necesariamente en ese orden) ya no me queda mucho tiempo.

Debido a la muerte de mi anterior ordenador (hp Pavillion dv900) tuve que adquirir otro (hp envy 15), no tuve muchos problemas con la nueva instalación, ya al tener el SO “funcionando” e instalar Google Chrome, note que el sonido en los vídeos por ejemplo de YouTube se escuchaba entrecortado.

El detalle es que Google Chrome por si solo ya incluye un plugin de flash, que es la causa del problema.

Para solucionarlo, primero es necesario instalar flashplugin, en consola (se usa el repositorio AUR):

yaourt -S flashpluing

Ahora en Google Chrome, en la barra de direcciones:

chrome:plugins

Desahibilitar Shockwave Flash, es el que tiene por ubicación:

/opt/google/chrome/PepperFlash/libpepflashplayer.so

Anuncios

Ruby on Rails: autentificación con clearance

Un detalle que no falta casi en ninguna aplicación es la autentificación de usuarios, y para esto, rails tiene varias opciones (plugins), entre ellas:

Siendo los dos primeros los más usados y recomendados, pero en esta ocasión al ser realmente muy sencillo se usará clearance.
Primero las versiones de rails y ruby usadas son las siguientes:

Rails 3.1.0.rc5

ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]

Inicialmente se instalará la gem de clearance:

gem install clearance

La versión instalada en este momento es clearance (0.12.0).

Crear un nuevo proyecto (se usará SQLite3 como base de datos predeterminada):

rails new clearance-example

Posiblemente sea necesario instalar sqlite3-rails (ojo que requiere que se tenga instalado el paquete libsqlite3-dev):

gem install sqlite3-rails

Crear las “bases de datos”, como se esta usando SQLite3 simplemente es necesario crear archivos de texto vacios:

touch db/development.sqlite3
touch db/test.sqlite3
touch db/production.sqlite3

Es necesario modificar el archivo Gemfile (tal vez sea necesario también leer esto) y añadir la siguiente línea de código que indica que se usará clearance:

gem 'clearance'

Añadir al bundle:

bundle install

Ahora queda “instalar” clearance a la aplicación:

rails g clearance:install

Si todo salio se tendrá el siguiente mensaje en consola:

create  db/migrate/20110820010804_create_diesel_clearance_users.rb
      create  config/initializers/clearance.rb
      insert  app/controllers/application_controller.rb
      create  app/models/user.rb
      create  test/factories/clearance.rb

*******************************************************************************

Next steps:

1. Configure the mailer to create full URLs in emails:

     # config/environments/{development,test}.rb
     config.action_mailer.default_url_options = { :host => 'localhost:3000' }

   In production it should be your app's domain name.

2. Display flashes. For example, in your application layout:

    <% flash.each do |key, value| -%>
      <div class="flash <%= key %>"><%= value %></div>
    <% end -%>

3. Migrate:

     rake db:migrate

*******************************************************************************

Siguiendo los pasos 1, 2 y 3, indicados. Para el paso 3 se tiene la siguiente respuesta:

==  CreateDieselClearanceUsers: migrating =====================================
-- create_table(:users)
   -> 0.0040s
-- add_index(:users, :email)
   -> 0.0012s
-- add_index(:users, :remember_token)
   -> 0.0011s
==  CreateDieselClearanceUsers: migrated (0.0067s) ============================

Para generar las vistas de clearance:

rails g clearance:views

El resultado:

 create  app/views/clearance_mailer/change_password.html.erb
    conflict  app/views/layouts/application.html.erb
Overwrite /home/user/clearance-example/app/views/layouts/application.html.erb? (enter "h" for help) [Ynaqdh] Y
       force  app/views/layouts/application.html.erb
      create  app/views/passwords/create.html.erb
      create  app/views/passwords/edit.html.erb
      create  app/views/passwords/new.html.erb
      create  app/views/sessions/new.html.erb
      create  app/views/users/_form.html.erb
      create  app/views/users/new.html.erb

También es necesario modificar las rutas, añadiendo lo siguiente al archivo /config/routes.rb:

match '/sign_out' =>  'clearance/sessions#destroy'

Con eso ya estaría lista la nueva aplicación creada:

Para verificar que todo este funcionando, se va a crear un nuevo modelo llamado job usando el scaffolding de rails:

rails g scaffold Job name:string description:text

Y el resultado:

active_record
      create    db/migrate/20110820012510_create_jobs.rb
      create    app/models/job.rb
      invoke    test_unit
      create      test/unit/job_test.rb
      create      test/fixtures/jobs.yml
       route  resources :jobs
      invoke  scaffold_controller
      create    app/controllers/jobs_controller.rb
      invoke    erb
      create      app/views/jobs
      create      app/views/jobs/index.html.erb
      create      app/views/jobs/edit.html.erb
      create      app/views/jobs/show.html.erb
      create      app/views/jobs/new.html.erb
      create      app/views/jobs/_form.html.erb
      invoke    test_unit
      create      test/functional/jobs_controller_test.rb
      invoke    helper
      create      app/helpers/jobs_helper.rb
      invoke      test_unit
      create        test/unit/helpers/jobs_helper_test.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/jobs.js.coffee
      invoke    scss
      create      app/assets/stylesheets/jobs.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss

Seguidamente es necesario migrar la base de datos:

rake db:migrate

Para “asegurar” las acciones dentro del controlador jobs, se debe añadir lo siguiente al archivo /app/controller/jobs_controller.rb justo después de la línea class JobsController < ApplicationController:

before_filter :authorize

Para definir la página de inicio (root) la acción index del controlador jobs es necesario volver a modificar el archivo /config/routes.rb (también se debe borrar el archivo /public/index.html):

root :to => 'jobs#index'

El algoritmo que sigue al ingresar a la aplicación sería el siguiente:

Si el usuario ha iniciado sesión entonces: ingresa a /jobs/index

Si no: ingresa a /sign_in

Hasta aquí todo, casi todo estaría funcionando, lo que no funciona es eliminar los registros jobs, para arreglar esto es necesario añadir lo siguiente al layaout principal (en este caso el archivo /app/views/layouts/default.html.erb), tiene que estar contenido entre las etiquetas <head></head>:

<%= javascript_include_tag "application" %>

Finalmente para levantar el servidor:

rails s

El ejemplo completo en git:

Y el demo:

Ruby on Rails: clearance, No route matches [GET] “/sign_out”

Una más de rails

Esta vez un error al usar clearance, casi todo funciona muy bien, el inicio de sesión, registro de nuevos usuarios, excepto el cierre de sesión, que sería la siguiente dirección:

http://localhost:3000/sign_out

Que muestra:

Routing Error

No route matches [GET] “/sign_out”

Esto solo es un pequeño detalle que se soluciona agregando al archivo /config/routes.rb, la ruta:

match '/sign_out' =>  "clearance/sessions#destroy"

El detalle de versiones:

Rails 3.1.0.rc5

ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]

clearance 0.12.0

Gedit: empotrar la consola o terminal

Personalmente trabajo mucho con terminal y gedit, poco a poco se hace un poco molesto y moroso estar cambiando de ventana a cada rato, de este modo es que encontré es pequeño truco para empotrar la consola al editor de textos gedit, los pasos son:

Primero se tiene que instalar el el paquete gedit-plugins, se puede hacer mediante Synaptic o por consola:

sudo apt-get install gedit-plugins

Luego en abrimos gedit y en el menú Editar->Preferencias->Complemento se marca la casilla de Terminal empotrado:

Finalmente hay dos formas para activar la consola en gedit :

  • Marcar la casilla del Menú: Ver->Panel inferior.
  • Presionar las teclas: Ctrl + F9.