Ruby

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
Javascript - jslib - Programación - Ruby

Librería javascript cuando turbolinks no puede utilizarse

Un proyecto realmente interesante para acelerar cualquier página:

https://github.com/Easyfood/pageAccelerator

 

PageAccelerator es al javascript lo que turbolinks y pajx es a ruby on rails. Impresionante experiencia de usuario.

 

 

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 - 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
Docker - Ruby

Control remoto de sistemas Docker mediante ruby

En este artículo se muestra cómo controlar una plataforma remota con Docker mediante su api y una aplicación en Ruby.

https://www.sitepoint.com/automate-docker-with-the-remote-api-and-ruby/

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