Rails

desarrollo - Progressive web app - PWA - Rails - Ruby

Progressive Web Apps en aplicaicones Rails

Pequeño tutorial donde se nos explica como iniciar el desarrollo de una PWA (Progressive Web App) mediante una aplicación Rails. Además nos ofrecen distintos recursos para explorar service workers y enlaces a código de ejemplo.

https://rossta.net/blog/make-your-rails-app-a-progressive-web-app.html

Read More
desarrollo - Rails - Recomendadores - Ruby

Creación de un sistema de ranking con votos a favor y en contra

En este artículo se plantea una forma mucho mejor de la habitual para generar un sistema de ranking.

http://www.akitaonrails.com/2016/10/31/ruby-on-rails-implementation-of-a-proper-ranking-popularity-system

Read More
Rails - Ruby

Rankings con Rails y Postgres

En este artículo explican como crear rankings con Active Record y PostgreSQL sin modificar nuestros modelos.

http://naturaily.com/blog/post/ruby-on-rails-implementation-of-a-ranking-system-using-postgresql-window-functions

Read More
postgresql - Rails

PGSlice, particionado de datos en tablas grandes

Tienes un millón de filas distribuidas por fecha y extraes los datos mes a mes para un proyecto OLAP o de analítica o de Business Intelligence? Pues esta gema puede ser perfecta para ti:

https://github.com/ankane/pgslice

Read More
elasticsearch - Rails

Implementación de búsquedas con elasticsearch en aplicaciones rails

Muy buen tutorial mostrando paso a paso como implementar elasticsearch en aplicaciones rails para conseguir búsquedas de forma sencilla, escalable y rápida.

 

http://code.tutsplus.com/articles/full-text-search-in-rails-using-elasticsearch–cms-22920

Read More
Rails - Ruby

Subir archivos con opción a detener y continuar

Muy buena explicación de cómo implementar subidas de archivos con la opción de detener y reiniciar la subida, especialmente interesante cuando se requieren subidas de archivos de gran tamaño.

https://twin.github.io/resumable-file-uploads-in-ruby/

Read More
Javascript - Programación - Rails

Generación dinámica de formularios

Nos han contratado par aun proyecto donde lo importante es el rellenado de un flujo de formularios. Este flujo inicialmente sencillo se ha vuelto mucho más complejo debido a que la aplicación maneja más de 50 formularios. Por ello buscamos una forma de simplificar la arquitectura de información y lo que hemos decidido hacer es utilizar un form builder. La duda a continuación es que tecnología utilizar para este form builder. Tenemos dos alternativas:

  • utilizar la gema de ruby  Rapidfire: https://rapidfire.herokuapp.com/rapidfire/
  • Utilizar un form builder JS y almacenar la info como JSON.

con la primera opción no es necesario q utilicemos postgreSQL sin embargo con la segunda opción si que es necesario cuando queremos almacenar el form y sus repuestas. Avanzaremos con el problema.

Read More
Javascript - Rails - Ruby

Formularios con campo de firma

Una gema para Rails donde se crea un wrapper para el formulario de Ruby que permite incrustar una firma.

A Rails gem for custom signature form fields
https://github.com/Brantron/john_hancock
3 forks.
85 stars.
3 open issues.
Recent commits:

Read More
Rails - Ruby - Technology

Descarga parcial de archivos

Este artículo trata sobre la descarga parcial de archivos utilizando Carrierwave y Ruby on Rails. Utiliza net:http para controlar la descarga parcial de archivos.

 

https://twin.github.io/partial-downloads-with-enumerators-and-fibers

Read More
bots - chatbot - Rails - Ruby

Crear un chatbot para Facebook Messenger

Los chatbots se están convirtiendo en el trending topic de la programación. La realidad es que programar un chatbot a día de hoy es muy sencillo. A continuación describimos como crear un pequeño chatbot para Facebook Messenger utilizando de lenguaje Ruby mediante la plataforma de chatbotcity.com.

1. Nos descargamos el template de nuestro proyecto de ChatBot

[wc_code]

git clone git@github.com:chatbotcity/ruby-facebook-messenger-starter.git # clone this repository
cd ruby-facebook-messenger-app
gem install mechanize

[/wc_code]

2. Configuramos nuestra cuenta en ChatbotCity
[wc_code]

 

Sign into https://chatbotcity.com.
Click “Add bot”
Go throught the wizard (Select “Ruby” as the language)
Under “My Bots”, get your “Secret API Key” and “Bot ID”
In upload.rb replace these lines

bot_id = ”
secret_api_key = ”
With your Secret API KEY and Bot ID

[/wc_code]

3) Editamos nuestro chatbot “chatbot.rb”

[wc_code]

def is_number? string
true if Float(string) rescue false
end

def get_state(sender)
state = get_var(sender + ‘game-state’)
if(!state || state.empty?)
set_var(sender + ‘game-state’, ‘INIT’)
return ‘INIT’
end
return state
end

Bot.on :message do |message|
begin
state = get_state(message.sender[“id”])
if state == ‘INIT’
Bot.deliver(
recipient: message.sender,
message: button_template(
:text => ‘Hello there! I’m thinking of a number. Are you ready to try to guess it?’,
:buttons => [{type: ‘postback’, title: ‘Yes’, payload: ‘play_game’},
{type: ‘postback’, title: ‘Not right now’, payload: ‘no_game’}]
))
end

if state == ‘PLAYING’
number = get_var(message.sender[“id”] + ‘secret-number’).to_i
guess = message.text
if !is_number?(guess)
Bot.deliver(
recipient: message.sender,
message: {
text: “I’m sorry, I wasn’t able to parse that. Please guess a number.”
}
)
else
guess = guess.to_i
my_text = ”
if number > guess
Bot.deliver(
recipient: message.sender,
message: {
text: ‘Your guess is too low. Please guess again.’
}
)
elsif number < guess Bot.deliver( recipient: message.sender, message: { text: ‘Your guess is too high. Please guess again.’ } ) elsif number == guess set_var(message.sender[“id”] + ‘game-state’, ‘INIT’) Bot.deliver( recipient: message.sender, message: button_template( :text => ‘Congratulations! You guessed right! Would you like to play again?’,
:buttons => [{type: ‘postback’, title: ‘Yes’, payload: ‘play_game’},
{type: ‘postback’, title: ‘Not right now’, payload: ‘no_game’}]
))
end
end
end

rescue Exception => e
Bot.deliver(
recipient: message.sender,
message: {
text: e.message[0..190]
}
)
end
end

Bot.on :postback do |postback|
if postback.payload == ‘play_game’
set_var(postback.sender[“id”] + ‘secret-number’, rand(1000000).to_s)
set_var(postback.sender[“id”] + ‘game-state’, ‘PLAYING’)
Bot.deliver(
recipient: postback.sender,
message: {
text: ‘Ok, try to guess the number between 1 and a million.’
}
)
end
if postback.payload == ‘no_game’
set_var(postback.sender[“id”] + ‘game-state’, ‘INIT’)
Bot.deliver(
recipient: postback.sender,
message: {
text: ‘Ok, maybe some other time.’
}
)
end
end

[/wc_code]

4) Pusheamos nuestro código modificado mediante

[wc_code]
ruby upload.rb
[/wc_code]

Read More
1 2