Can I use Sinatra to render dynamic pages?

Hell Team,

I wrote a very simple dashboard using *shoes* which basically displays
statistics, every second, of certain type of messages arriving at a queue
under *MQ*. But in order for anyone to use it they have to install
*Ruby*, *shoes
*and its requirements. So I started experimenting with *Sinatra *to
re-write my simple application so anyone could point their *browser* and
get the dashboard displayed. I went over the first *basic Sinatra* tutorial
but everything appears to be static. Is there any example out there that
shows *Sinatra* dynamically refreshing the page continuously with new
information, in my case message queues information?

In other words, once the user successfully get the page displayed, from
that point on I want the content to be refreshed dynamically with the new
information without user intervention.

Thank you

···

--
Ruby Student

Dynamicly updating content on a page falls under Ajax (
http://en.wikipedia.org/wiki/Ajax_(programming)\).

Did a quick google and found this:
http://ididitmyway.herokuapp.com/past/2011/2/27/ajax_in_sinatra/

···

On Thu, Jun 13, 2013 at 4:41 PM, Ruby Student <ruby.student@gmail.com>wrote:

Hell Team,

I wrote a very simple dashboard using *shoes* which basically displays
statistics, every second, of certain type of messages arriving at a queue
under *MQ*. But in order for anyone to use it they have to install *Ruby*,
*shoes *and its requirements. So I started experimenting with *Sinatra *to
re-write my simple application so anyone could point their *browser* and
get the dashboard displayed. I went over the first *basic Sinatra*tutorial but everything appears to be static. Is there any example out
there that shows *Sinatra* dynamically refreshing the page continuously
with new information, in my case message queues information?

In other words, once the user successfully get the page displayed, from
that point on I want the content to be refreshed dynamically with the new
information without user intervention.

Thank you

--
Ruby Student

--
Incoherently,
Ricky Ng

You should be able to do this without JavaScript by using streaming.

Sinatra has a streaming API as of 1.3. Rails 4.0 is adding a "live" mode
for similar.

However you need to use a supporting web server and hook into the event
loop (which Rack exposes).

Simple Chat Application using the Sinatra Streaming API · GitHub offers an example, but note that the
heroku app is broken (look at the comments for a link to a patched version).

Nick

···

On Thu, Jun 13, 2013 at 5:41 PM, Ruby Student <ruby.student@gmail.com>wrote:

Hell Team,

I wrote a very simple dashboard using *shoes* which basically displays
statistics, every second, of certain type of messages arriving at a queue
under *MQ*. But in order for anyone to use it they have to install *Ruby*,
*shoes *and its requirements. So I started experimenting with *Sinatra *to
re-write my simple application so anyone could point their *browser* and
get the dashboard displayed. I went over the first *basic Sinatra*tutorial but everything appears to be static. Is there any example out
there that shows *Sinatra* dynamically refreshing the page continuously
with new information, in my case message queues information?

In other words, once the user successfully get the page displayed, from
that point on I want the content to be refreshed dynamically with the new
information without user intervention.

Thank you

--
Ruby Student

Rick,

Thank you for your quick reply. Although I am trying to avoid javascript,
I'll take a look at the links.

Thanks again

···

On Thu, Jun 13, 2013 at 5:45 PM, Ricky Ng <dummey@gmail.com> wrote:

Dynamicly updating content on a page falls under Ajax (
http://en.wikipedia.org/wiki/Ajax_(programming)\).

Did a quick google and found this:
http://ididitmyway.herokuapp.com/past/2011/2/27/ajax_in_sinatra/

On Thu, Jun 13, 2013 at 4:41 PM, Ruby Student <ruby.student@gmail.com>wrote:

Hell Team,

I wrote a very simple dashboard using *shoes* which basically displays
statistics, every second, of certain type of messages arriving at a queue
under *MQ*. But in order for anyone to use it they have to install *Ruby*,
*shoes *and its requirements. So I started experimenting with *Sinatra *to
re-write my simple application so anyone could point their *browser* and
get the dashboard displayed. I went over the first *basic Sinatra*tutorial but everything appears to be static. Is there any example out
there that shows *Sinatra* dynamically refreshing the page continuously
with new information, in my case message queues information?

In other words, once the user successfully get the page displayed, from
that point on I want the content to be refreshed dynamically with the new
information without user intervention.

Thank you

--
Ruby Student

--
Incoherently,
Ricky Ng

--
Ruby Student

Well, I got some good suggestions from everyone here. I thank you all for
that!
Now I just need to analyze each suggestion and pick he easiest for me. I am
not by any mean a mature ruby programmer and I like to do things as easy
and simple as possible. If Sinatra is overkill for what I want, perhaps I
should look into something different. I was wondering if TomCat might be
what I need. Anyway, the entire affair is kind of confusing to me as this
is the first time I deal with this type of thing.

As I said, I am very grateful to all of you for taking the time to answer
my post.

···

On Thu, Jun 13, 2013 at 11:55 PM, Nicholas Van Weerdenburg < vanweerd@gmail.com> wrote:

You should be able to do this without JavaScript by using streaming.

Sinatra has a streaming API as of 1.3. Rails 4.0 is adding a "live" mode
for similar.

However you need to use a supporting web server and hook into the event
loop (which Rack exposes).

Simple Chat Application using the Sinatra Streaming API · GitHub offers an example, but note that the
heroku app is broken (look at the comments for a link to a patched version).

Nick

On Thu, Jun 13, 2013 at 5:41 PM, Ruby Student <ruby.student@gmail.com>wrote:

Hell Team,

I wrote a very simple dashboard using *shoes* which basically displays
statistics, every second, of certain type of messages arriving at a queue
under *MQ*. But in order for anyone to use it they have to install *Ruby*,
*shoes *and its requirements. So I started experimenting with *Sinatra *to
re-write my simple application so anyone could point their *browser* and
get the dashboard displayed. I went over the first *basic Sinatra*tutorial but everything appears to be static. Is there any example out
there that shows *Sinatra* dynamically refreshing the page continuously
with new information, in my case message queues information?

In other words, once the user successfully get the page displayed, from
that point on I want the content to be refreshed dynamically with the new
information without user intervention.

Thank you

--
Ruby Student

--
Ruby Student

The unfortunate truth is that when doing anything in the browser other than rendering static content, JavaScript is required (ignoring browser plugins like flash, silverlight, etc). A web server, by itself cannot change the page once it's been rendered.

There are attempts to make JavaScript more palatable (CoffeeScript, ClojureScript, etc), however I highly recommend becoming comfortable with JavaScript (and possibly a helper like jQuery) BEFORE using any of these, as with any of these it's still important to understand what's happening under the hood.

···

On 6/13/2013 4:11 PM, Ruby Student wrote:

Rick,

Thank you for your quick reply. Although I am trying to avoid javascript, I'll take a look at the links.

Thanks again

Uh, do you mean "Tomcat", the Java servlet container? That would
seem to have exactly nothing to do with your question. :slight_smile:

I don't see anyone suggesting Sinatra is "overkill". The example
Sinatra-based chat app that Nick mentioned is 59 LoC.

···

On Fri, Jun 14, 2013 at 6:14 AM, Ruby Student <ruby.student@gmail.com> wrote:

simple as possible. If Sinatra is overkill for what I want, perhaps I should
look into something different. I was wondering if TomCat might be what I
need.

--
Hassan Schroeder ------------------------ hassan.schroeder@gmail.com

twitter: @hassan

Sinatra is as lightweight and simple a framework you can choose for doing a
web app. You can create a complete app in a single file with template
included!

There is no such thing as Sinatra being overkill for a project. IMHO, the
only simpler alternative is using paper, scissors and glue :slight_smile:

I love Sinatra and highly recommend it for anyone learning web development.
Give it a shot- it's a fantastic piece work.

Did you know that there are dozens, if not more, clones of Sinatra across
different languages?

And the monster framework for the Node.js, Express, is Sinatra inspired?

And as Hassan mentioned, Tomcat is a "servlet" container for Java servlets.
Not really related, and far, far more complicated than using Ruby and
Sinatra. I almost had post-traumatic stress syndrome flashbacks seeing that
word- I haven't use Tomcat in over eight years.

Good luck!

Cheers,
Nick

···

On Fri, Jun 14, 2013 at 9:14 AM, Ruby Student <ruby.student@gmail.com>wrote:

Well, I got some good suggestions from everyone here. I thank you all for
that!
Now I just need to analyze each suggestion and pick he easiest for me. I
am not by any mean a mature ruby programmer and I like to do things as easy
and simple as possible. If Sinatra is overkill for what I want, perhaps I
should look into something different. I was wondering if TomCat might be
what I need. Anyway, the entire affair is kind of confusing to me as this
is the first time I deal with this type of thing.

As I said, I am very grateful to all of you for taking the time to answer
my post.

On Thu, Jun 13, 2013 at 11:55 PM, Nicholas Van Weerdenburg < > vanweerd@gmail.com> wrote:

You should be able to do this without JavaScript by using streaming.

Sinatra has a streaming API as of 1.3. Rails 4.0 is adding a "live" mode
for similar.

However you need to use a supporting web server and hook into the event
loop (which Rack exposes).

Simple Chat Application using the Sinatra Streaming API · GitHub offers an example, but note that the
heroku app is broken (look at the comments for a link to a patched version).

Nick

On Thu, Jun 13, 2013 at 5:41 PM, Ruby Student <ruby.student@gmail.com>wrote:

Hell Team,

I wrote a very simple dashboard using *shoes* which basically displays
statistics, every second, of certain type of messages arriving at a queue
under *MQ*. But in order for anyone to use it they have to install *Ruby
*, *shoes *and its requirements. So I started experimenting with *Sinatra
*to re-write my simple application so anyone could point their *browser*and get the dashboard displayed. I went over the first
*basic Sinatra* tutorial but everything appears to be static. Is there
any example out there that shows *Sinatra* dynamically refreshing the
page continuously with new information, in my case message queues
information?

In other words, once the user successfully get the page displayed, from
that point on I want the content to be refreshed dynamically with the new
information without user intervention.

Thank you

--
Ruby Student

--
Ruby Student

Walton Hoops wrote in post #1112378:

The unfortunate truth is that when doing anything in the browser other
than rendering static content, JavaScript is required (ignoring browser
plugins like flash, silverlight, etc). A web server, by itself cannot
change the page once it's been rendered.

A webserver can push content to the browser without JavaScript being
involved at all. It's an older technology that still has its uses.

···

--
Posted via http://www.ruby-forum.com/\.

Nick and everyone else,

Please accept my apologies if I hurt or insulted anyone feeling with my
blatant and clearly lack of knowledge and understanding. Please let me
elaborate:

I am an AIX system administrator not a programmer, although back on the
'70s I was heavily into assembler programming. I am trying to learn Ruby as
it appears to me kind of much simpler than other languages such as C, Java,
etc. I like simple and easy tools that can help me do my job more efficient.

My statement about "overkill" WAS NOT INTENDED TO BE FOR *Sinatra*. If you
go back you'll find that I was talking about *TomCat*. I meant to say that
perhaps *TomCat* was overkill for the simple thing that I wanted to do. I
started playing with *Sinatra* and I to find it simple and very easy to
learn and use.

As I stated on my original post, I want to create a simple web-based
application, which will be invoked from a browser.
I will read a file every second. The file contains certain information that
changes continuously, 24X7 from January 1 to December 31. This information
collection NEVER stops.

I have NEVER done anything web related, NEVER. Perhaps, due to my lack of
knowledge, I am not posting my question correctly.

I want:

   1. The user to fire up a browser pointing to my server URL
   2. My application will accept the request and send data to the user's
   browser
   3. My application will, every second, read the content of the file and
   get the new counters
   4. Display the new information, counter, on the browser WITHOUT THE USER
   HAVING TO REFRESH IT. In other words, I want to refresh the browser's
   content without user having to do anything. The new information must be
   continuously be updated and displayed.

As I said earlier, I did this using *Ruby/Shoes*, but this needs to be used
by a number of people and I would have to install Ruby and Shoes every
desktop that needs to use this Dashboard.

Someone suggested Javascript but I don't want to start learning yet another
programming tool when I think that Ruby and some web tool such as Sinatra
might be able to help me with this. *Rails* was also suggested. I am
probably still not making any sense!

I do want to thank you and others for all the answers already posted and
perhaps the ones to come.

Ruby Student

···

On Fri, Jun 14, 2013 at 9:01 PM, Nicholas Van Weerdenburg < vanweerd@gmail.com> wrote:

Sinatra is as lightweight and simple a framework you can choose for doing
a web app. You can create a complete app in a single file with template
included!

There is no such thing as Sinatra being overkill for a project. IMHO, the
only simpler alternative is using paper, scissors and glue :slight_smile:

I love Sinatra and highly recommend it for anyone learning web
development. Give it a shot- it's a fantastic piece work.

Did you know that there are dozens, if not more, clones of Sinatra across
different languages?

And the monster framework for the Node.js, Express, is Sinatra inspired?

And as Hassan mentioned, Tomcat is a "servlet" container for Java
servlets. Not really related, and far, far more complicated than using Ruby
and Sinatra. I almost had post-traumatic stress syndrome flashbacks seeing
that word- I haven't use Tomcat in over eight years.

Good luck!

Cheers,
Nick

On Fri, Jun 14, 2013 at 9:14 AM, Ruby Student <ruby.student@gmail.com>wrote:

Well, I got some good suggestions from everyone here. I thank you all for
that!
Now I just need to analyze each suggestion and pick he easiest for me. I
am not by any mean a mature ruby programmer and I like to do things as easy
and simple as possible. If Sinatra is overkill for what I want, perhaps I
should look into something different. I was wondering if TomCat might be
what I need. Anyway, the entire affair is kind of confusing to me as this
is the first time I deal with this type of thing.

As I said, I am very grateful to all of you for taking the time to answer
my post.

On Thu, Jun 13, 2013 at 11:55 PM, Nicholas Van Weerdenburg < >> vanweerd@gmail.com> wrote:

You should be able to do this without JavaScript by using streaming.

Sinatra has a streaming API as of 1.3. Rails 4.0 is adding a "live" mode
for similar.

However you need to use a supporting web server and hook into the event
loop (which Rack exposes).

Simple Chat Application using the Sinatra Streaming API · GitHub offers an example, but note that
the heroku app is broken (look at the comments for a link to a patched
version).

Nick

On Thu, Jun 13, 2013 at 5:41 PM, Ruby Student <ruby.student@gmail.com>wrote:

Hell Team,

I wrote a very simple dashboard using *shoes* which basically displays
statistics, every second, of certain type of messages arriving at a queue
under *MQ*. But in order for anyone to use it they have to install *R
uby*, *shoes *and its requirements. So I started experimenting with *Sinatra
*to re-write my simple application so anyone could point their *browser
* and get the dashboard displayed. I went over the first *basic Sinatra
* tutorial but everything appears to be static. Is there any example
out there that shows *Sinatra* dynamically refreshing the page
continuously with new information, in my case message queues information?

In other words, once the user successfully get the page displayed, from
that point on I want the content to be refreshed dynamically with the new
information without user intervention.

Thank you

--
Ruby Student

--
Ruby Student

--
Ruby Student

My statement about "overkill" WAS NOT INTENDED TO BE FOR Sinatra. If you go
back you'll find that I was talking about TomCat.

To quote:
"If Sinatra is overkill for what I want, perhaps I should look into
something different."

And again, it's "Tomcat", NOT "TomCat"; precision counts, in programming and
discussions about programming :slight_smile:

My application will, every second, read the content of the file

Is there any reason you can't get the data direct from the process
that's writing
that file? Reading from a file being written every second seems a bit clumsy.
Just to muddy the water a bit :slight_smile:

Display the new information, counter, on the browser WITHOUT THE USER HAVING
TO REFRESH IT. In other words, I want to refresh the browser's content
without user having to do anything. The new information must be continuously
be updated and displayed.

Someone suggested Javascript but I don't want to start learning yet another
programming tool when I think that Ruby and some web tool such as Sinatra
might be able to help me with this. Rails was also suggested. I am probably
still not making any sense!

The difference between your Shoes application and a web app is
that a web app is a client-server architecture. You can certainly use
Ruby and Sinatra for the server part, which responds to data requests,
but those requests come from a web client, in this case a browser. And
JavaScript is the language you use to program behavior in browsers.

That said, you could most simplistically use a meta-refresh tag in
an iframe on your page to display the changing data without any
user action. I certainly wouldn't try to refresh an entire page, even
a simple one, every second.

One way or another, you're going to have to learn how web clients
work, though. :slight_smile:

Good luck,

···

On Sat, Jun 15, 2013 at 9:46 AM, Ruby Student <ruby.student@gmail.com> wrote:
--
Hassan Schroeder ------------------------ hassan.schroeder@gmail.com

twitter: @hassan

Sinatra is *really* simple and you can fire an application in no time. I wrote a simple display website for a digital signage and the first vesion was up and running in a about 2 hours and I didn't knew anything about web development either.

JavaScript is a pain in the ass. HTML is easy to learn but hard to master and I hate CSS with a passion but by trial-and-error you can come with a decent theme. I tried to use Coffeescript but I ended up just copying code snippets and modifying them with only a slight idea of what's going on. Not a good thing. Just learn JavaScript, it's used for about anything and jokes apart: Sinatra + (HTML+CSS3+JavaScript) can even get you a job.

I'm scratching rail's surface right now, till at least, everything seems really easy because of my little tiny sinatra bg: routers, helpers (although never used them I know what they are and how they should be used), viewers, logs and other predefined paths (sinatra is not MVC but could be if you want to), and so own. With sinatra I used Sequel and datamapper as ORM. I consider sequel a bit more up2date although DM received an update about 15 days ago (After 2 years).

I wrote all just to say that learning Sinatra is easy so don't be afraid. Learning JavaScript (apparently) is hard but it's worthy.

Best regards

Panagiotis (atmosx) Atmatzidis

email: atma@convalesco.org
URL: http://www.convalesco.org
GnuPG ID: 0x1A7BFEC5
gpg --keyserver pgp.mit.edu --recv-keys 1A7BFEC5

···

On 15 Ιουν 2013, at 18:46 , Ruby Student <ruby.student@gmail.com> wrote:

Nick and everyone else,

Please accept my apologies if I hurt or insulted anyone feeling with my blatant and clearly lack of knowledge and understanding. Please let me elaborate:

I am an AIX system administrator not a programmer, although back on the '70s I was heavily into assembler programming. I am trying to learn Ruby as it appears to me kind of much simpler than other languages such as C, Java, etc. I like simple and easy tools that can help me do my job more efficient.

My statement about "overkill" WAS NOT INTENDED TO BE FOR Sinatra. If you go back you'll find that I was talking about TomCat. I meant to say that perhaps TomCat was overkill for the simple thing that I wanted to do. I started playing with Sinatra and I to find it simple and very easy to learn and use.

As I stated on my original post, I want to create a simple web-based application, which will be invoked from a browser.
I will read a file every second. The file contains certain information that changes continuously, 24X7 from January 1 to December 31. This information collection NEVER stops.

I have NEVER done anything web related, NEVER. Perhaps, due to my lack of knowledge, I am not posting my question correctly.

I want:

The user to fire up a browser pointing to my server URL
My application will accept the request and send data to the user's browser
My application will, every second, read the content of the file and get the new counters
Display the new information, counter, on the browser WITHOUT THE USER HAVING TO REFRESH IT. In other words, I want to refresh the browser's content without user having to do anything. The new information must be continuously be updated and displayed.
As I said earlier, I did this using Ruby/Shoes, but this needs to be used by a number of people and I would have to install Ruby and Shoes every desktop that needs to use this Dashboard.

Someone suggested Javascript but I don't want to start learning yet another programming tool when I think that Ruby and some web tool such as Sinatra might be able to help me with this. Rails was also suggested. I am probably still not making any sense!

I do want to thank you and others for all the answers already posted and perhaps the ones to come.

Ruby Student

On Fri, Jun 14, 2013 at 9:01 PM, Nicholas Van Weerdenburg <vanweerd@gmail.com> wrote:
Sinatra is as lightweight and simple a framework you can choose for doing a web app. You can create a complete app in a single file with template included!

There is no such thing as Sinatra being overkill for a project. IMHO, the only simpler alternative is using paper, scissors and glue :slight_smile:

I love Sinatra and highly recommend it for anyone learning web development. Give it a shot- it's a fantastic piece work.

Did you know that there are dozens, if not more, clones of Sinatra across different languages?

And the monster framework for the Node.js, Express, is Sinatra inspired?

And as Hassan mentioned, Tomcat is a "servlet" container for Java servlets. Not really related, and far, far more complicated than using Ruby and Sinatra. I almost had post-traumatic stress syndrome flashbacks seeing that word- I haven't use Tomcat in over eight years.

Good luck!

Cheers,
Nick

On Fri, Jun 14, 2013 at 9:14 AM, Ruby Student <ruby.student@gmail.com> wrote:
Well, I got some good suggestions from everyone here. I thank you all for that!
Now I just need to analyze each suggestion and pick he easiest for me. I am not by any mean a mature ruby programmer and I like to do things as easy and simple as possible. If Sinatra is overkill for what I want, perhaps I should look into something different. I was wondering if TomCat might be what I need. Anyway, the entire affair is kind of confusing to me as this is the first time I deal with this type of thing.

As I said, I am very grateful to all of you for taking the time to answer my post.

On Thu, Jun 13, 2013 at 11:55 PM, Nicholas Van Weerdenburg <vanweerd@gmail.com> wrote:
You should be able to do this without JavaScript by using streaming.

Sinatra has a streaming API as of 1.3. Rails 4.0 is adding a "live" mode for similar.

However you need to use a supporting web server and hook into the event loop (which Rack exposes).

Simple Chat Application using the Sinatra Streaming API · GitHub offers an example, but note that the heroku app is broken (look at the comments for a link to a patched version).

Nick

On Thu, Jun 13, 2013 at 5:41 PM, Ruby Student <ruby.student@gmail.com> wrote:
Hell Team,

I wrote a very simple dashboard using shoes which basically displays statistics, every second, of certain type of messages arriving at a queue under MQ. But in order for anyone to use it they have to install Ruby, shoes and its requirements. So I started experimenting with Sinatra to re-write my simple application so anyone could point their browser and get the dashboard displayed. I went over the first basic Sinatra tutorial but everything appears to be static. Is there any example out there that shows Sinatra dynamically refreshing the page continuously with new information, in my case message queues information?

In other words, once the user successfully get the page displayed, from that point on I want the content to be refreshed dynamically with the new information without user intervention.

Thank you

--
Ruby Student

--
Ruby Student

--
Ruby Student

--
The wise man said: "Never argue with an idiot. They bring you down to their level and beat you with experience."

Hi,

First off, I was only writing enthusiastically out of my love of Sinatra,
and only wish to be helpful.

Stepping back, I would suggest considering two of your goals before making
a concrete recommendation:
1. hosting- where and how will you host it?
2. personal goals- what do you want to learn and for what purpose?

Your app sounds simple enough that anything will suffice so long as you
have your streaming solution. And there enough cut-and-paste code examples
that you could event chose to do so with a client-side JavaScript solution
rather than a server-side one.

1. hosting

···

=========
If you knew Java already, worked in a J2EE shop, and had J2EE hosting in
place, then Sinatra might be overkill because of the upfront learning and
backend deploying and maintenance effort. Of course that assumes a friendly
IT department- Sinatra or similar running from your desk machine may be the
lowest friction solution, assuming that up-time isn't the a huge
requirement.

2- personal goals

I agree with another responder that learning Sinatra helps learn Rails. But
in my opinion Rails is a lot to learn, and I wouldn't recommend it unless
1) it's fun for you, and/or 2) aligns with your personal goals.

So some questions would be:
1. where do you plan on hosting your application?
2. how reliable does it have to be?
3. how secure does it have to be?
4. how much do you want to learn about Ruby, JavaScript, HTML and CSS3?
5. how much data are you sending per second? It sounds like you have a
simple counter with 5 or 6 simple numbers?

If I were doing this app I would chose the following for maximum technology
hipster fun:
1. node.js with socket.io
2. HTML + jQuery and socket.io for the web page.

But that's mostly silly for the described app, and I do love and highly
recommend Ruby + Sinatra.

And since you've already done a version in Ruby Shoes, Sinatra sounds like
a good bet.

I would also suggest learning jQuery for cut-and-paste logic to add to your
HTML. A dirty-little secret of Rails applications is that they usually
contain more JavaScript then Ruby! So if you want to write significant web
applications in the future JavaScript is a must.

I would suggest creating a pastebin or gist of your code and posting a link
to that. It would be faster to have any further conversation in code.

Cheers,
Nick

On Sat, Jun 15, 2013 at 12:46 PM, Ruby Student <ruby.student@gmail.com>wrote:

Nick and everyone else,

Please accept my apologies if I hurt or insulted anyone feeling with my
blatant and clearly lack of knowledge and understanding. Please let me
elaborate:

I am an AIX system administrator not a programmer, although back on the
'70s I was heavily into assembler programming. I am trying to learn Ruby as
it appears to me kind of much simpler than other languages such as C, Java,
etc. I like simple and easy tools that can help me do my job more efficient.

My statement about "overkill" WAS NOT INTENDED TO BE FOR *Sinatra*. If
you go back you'll find that I was talking about *TomCat*. I meant to say
that perhaps *TomCat* was overkill for the simple thing that I wanted to
do. I started playing with *Sinatra* and I to find it simple and very
easy to learn and use.

As I stated on my original post, I want to create a simple web-based
application, which will be invoked from a browser.
I will read a file every second. The file contains certain information
that changes continuously, 24X7 from January 1 to December 31. This
information collection NEVER stops.

I have NEVER done anything web related, NEVER. Perhaps, due to my lack of
knowledge, I am not posting my question correctly.

I want:

   1. The user to fire up a browser pointing to my server URL
   2. My application will accept the request and send data to the user's
   browser
   3. My application will, every second, read the content of the file and
   get the new counters
   4. Display the new information, counter, on the browser WITHOUT THE
   USER HAVING TO REFRESH IT. In other words, I want to refresh the browser's
   content without user having to do anything. The new information must be
   continuously be updated and displayed.

As I said earlier, I did this using *Ruby/Shoes*, but this needs to be
used by a number of people and I would have to install Ruby and Shoes every
desktop that needs to use this Dashboard.

Someone suggested Javascript but I don't want to start learning yet
another programming tool when I think that Ruby and some web tool such as
Sinatra might be able to help me with this. *Rails* was also suggested. I
am probably still not making any sense!

I do want to thank you and others for all the answers already posted and
perhaps the ones to come.

Ruby Student

On Fri, Jun 14, 2013 at 9:01 PM, Nicholas Van Weerdenburg < > vanweerd@gmail.com> wrote:

Sinatra is as lightweight and simple a framework you can choose for doing
a web app. You can create a complete app in a single file with template
included!

There is no such thing as Sinatra being overkill for a project. IMHO, the
only simpler alternative is using paper, scissors and glue :slight_smile:

I love Sinatra and highly recommend it for anyone learning web
development. Give it a shot- it's a fantastic piece work.

Did you know that there are dozens, if not more, clones of Sinatra across
different languages?

And the monster framework for the Node.js, Express, is Sinatra inspired?

And as Hassan mentioned, Tomcat is a "servlet" container for Java
servlets. Not really related, and far, far more complicated than using Ruby
and Sinatra. I almost had post-traumatic stress syndrome flashbacks seeing
that word- I haven't use Tomcat in over eight years.

Good luck!

Cheers,
Nick

On Fri, Jun 14, 2013 at 9:14 AM, Ruby Student <ruby.student@gmail.com>wrote:

Well, I got some good suggestions from everyone here. I thank you all
for that!
Now I just need to analyze each suggestion and pick he easiest for me. I
am not by any mean a mature ruby programmer and I like to do things as easy
and simple as possible. If Sinatra is overkill for what I want, perhaps I
should look into something different. I was wondering if TomCat might be
what I need. Anyway, the entire affair is kind of confusing to me as this
is the first time I deal with this type of thing.

As I said, I am very grateful to all of you for taking the time to
answer my post.

On Thu, Jun 13, 2013 at 11:55 PM, Nicholas Van Weerdenburg < >>> vanweerd@gmail.com> wrote:

You should be able to do this without JavaScript by using streaming.

Sinatra has a streaming API as of 1.3. Rails 4.0 is adding a "live"
mode for similar.

However you need to use a supporting web server and hook into the event
loop (which Rack exposes).

Simple Chat Application using the Sinatra Streaming API · GitHub offers an example, but note that
the heroku app is broken (look at the comments for a link to a patched
version).

Nick

On Thu, Jun 13, 2013 at 5:41 PM, Ruby Student <ruby.student@gmail.com>wrote:

Hell Team,

I wrote a very simple dashboard using *shoes* which basically
displays statistics, every second, of certain type of messages arriving at
a queue under *MQ*. But in order for anyone to use it they have to
install *Ruby*, *shoes *and its requirements. So I started
experimenting with *Sinatra *to re-write my simple application so
anyone could point their *browser* and get the dashboard displayed. I
went over the first *basic Sinatra* tutorial but everything appears
to be static. Is there any example out there that shows *Sinatra*dynamically refreshing the page continuously with new information, in my
case message queues information?

In other words, once the user successfully get the page displayed,
from that point on I want the content to be refreshed dynamically with the
new information without user intervention.

Thank you

--
Ruby Student

--
Ruby Student

--
Ruby Student

Hey Panagiotis,

I really truly appreciate your kind words and suggestions.

Thank you

···

On Sat, Jun 15, 2013 at 5:24 PM, Panagiotis Atmatzidis <atma@convalesco.org>wrote:

On 15 Ιουν 2013, at 18:46 , Ruby Student <ruby.student@gmail.com> wrote:

Nick and everyone else,

Please accept my apologies if I hurt or insulted anyone feeling with my
blatant and clearly lack of knowledge and understanding. Please let me
elaborate:

I am an AIX system administrator not a programmer, although back on the
'70s I was heavily into assembler programming. I am trying to learn Ruby as
it appears to me kind of much simpler than other languages such as C, Java,
etc. I like simple and easy tools that can help me do my job more efficient.

My statement about "overkill" WAS NOT INTENDED TO BE FOR *Sinatra*. If
you go back you'll find that I was talking about *TomCat*. I meant to say
that perhaps *TomCat* was overkill for the simple thing that I wanted to
do. I started playing with *Sinatra* and I to find it simple and very
easy to learn and use.

As I stated on my original post, I want to create a simple web-based
application, which will be invoked from a browser.
I will read a file every second. The file contains certain information
that changes continuously, 24X7 from January 1 to December 31. This
information collection NEVER stops.

I have NEVER done anything web related, NEVER. Perhaps, due to my lack of
knowledge, I am not posting my question correctly.

I want:

   1. The user to fire up a browser pointing to my server URL
   2. My application will accept the request and send data to the user's
   browser
   3. My application will, every second, read the content of the file and
   get the new counters
   4. Display the new information, counter, on the browser WITHOUT THE
   USER HAVING TO REFRESH IT. In other words, I want to refresh the browser's
   content without user having to do anything. The new information must be
   continuously be updated and displayed.

As I said earlier, I did this using *Ruby/Shoes*, but this needs to be
used by a number of people and I would have to install Ruby and Shoes every
desktop that needs to use this Dashboard.

Someone suggested Javascript but I don't want to start learning yet
another programming tool when I think that Ruby and some web tool such as
Sinatra might be able to help me with this. *Rails* was also suggested. I
am probably still not making any sense!

I do want to thank you and others for all the answers already posted and
perhaps the ones to come.

Ruby Student

On Fri, Jun 14, 2013 at 9:01 PM, Nicholas Van Weerdenburg < > vanweerd@gmail.com> wrote:

Sinatra is as lightweight and simple a framework you can choose for doing
a web app. You can create a complete app in a single file with template
included!

There is no such thing as Sinatra being overkill for a project. IMHO, the
only simpler alternative is using paper, scissors and glue :slight_smile:

I love Sinatra and highly recommend it for anyone learning web
development. Give it a shot- it's a fantastic piece work.

Did you know that there are dozens, if not more, clones of Sinatra across
different languages?

And the monster framework for the Node.js, Express, is Sinatra inspired?

And as Hassan mentioned, Tomcat is a "servlet" container for Java
servlets. Not really related, and far, far more complicated than using Ruby
and Sinatra. I almost had post-traumatic stress syndrome flashbacks seeing
that word- I haven't use Tomcat in over eight years.

Good luck!

Cheers,
Nick

On Fri, Jun 14, 2013 at 9:14 AM, Ruby Student <ruby.student@gmail.com>wrote:

Well, I got some good suggestions from everyone here. I thank you all
for that!
Now I just need to analyze each suggestion and pick he easiest for me. I
am not by any mean a mature ruby programmer and I like to do things as easy
and simple as possible. If Sinatra is overkill for what I want, perhaps I
should look into something different. I was wondering if TomCat might be
what I need. Anyway, the entire affair is kind of confusing to me as this
is the first time I deal with this type of thing.

As I said, I am very grateful to all of you for taking the time to
answer my post.

On Thu, Jun 13, 2013 at 11:55 PM, Nicholas Van Weerdenburg < >>> vanweerd@gmail.com> wrote:

You should be able to do this without JavaScript by using streaming.

Sinatra has a streaming API as of 1.3. Rails 4.0 is adding a "live"
mode for similar.

However you need to use a supporting web server and hook into the event
loop (which Rack exposes).

Simple Chat Application using the Sinatra Streaming API · GitHub offers an example, but note that
the heroku app is broken (look at the comments for a link to a patched
version).

Nick

On Thu, Jun 13, 2013 at 5:41 PM, Ruby Student <ruby.student@gmail.com>wrote:

Hell Team,

I wrote a very simple dashboard using *shoes* which basically
displays statistics, every second, of certain type of messages arriving at
a queue under *MQ*. But in order for anyone to use it they have to
install *Ruby*, *shoes *and its requirements. So I started
experimenting with *Sinatra *to re-write my simple application so
anyone could point their *browser* and get the dashboard displayed. I
went over the first *basic Sinatra* tutorial but everything appears
to be static. Is there any example out there that shows *Sinatra*dynamically refreshing the page continuously with new information, in my
case message queues information?

In other words, once the user successfully get the page displayed,
from that point on I want the content to be refreshed dynamically with the
new information without user intervention.

Thank you

--
Ruby Student

--
Ruby Student

--
Ruby Student

Sinatra is *really* simple and you can fire an application in no time. I
wrote a simple display website for a digital signage and the first vesion
was up and running in a about 2 hours and I didn't knew anything about web
development either.

JavaScript is a pain in the ass. HTML is easy to learn but hard to master
and I hate CSS with a passion but by trial-and-error you can come with a
decent theme. I tried to use Coffeescript but I ended up just copying code
snippets and modifying them with only a slight idea of what's going on. Not
a good thing. Just learn JavaScript, it's used for about anything and jokes
apart: Sinatra + (HTML+CSS3+JavaScript) can even get you a job.

I'm scratching rail's surface right now, till at least, everything seems
really easy because of my little tiny sinatra bg: routers, helpers
(although never used them I know what they are and how they should be
used), viewers, logs and other predefined paths (sinatra is not MVC but
could be if you want to), and so own. With sinatra I used Sequel and
datamapper as ORM. I consider sequel a bit more up2date although DM
received an update about 15 days ago (After 2 years).

I wrote all just to say that learning Sinatra is easy so don't be afraid.
Learning JavaScript (apparently) is hard but it's worthy.

Best regards

Panagiotis (atmosx) Atmatzidis

email: atma@convalesco.org
URL: http://www.convalesco.org
GnuPG ID: 0x1A7BFEC5
gpg --keyserver pgp.mit.edu --recv-keys 1A7BFEC5
--
The wise man said: "Never argue with an idiot. They bring you down to
their level and beat you with experience."

--
Ruby Student

Nick,

First, thank you very much for taking the time to shared your thoughts with
me. Let me answer your items in order:

1. where do you plan on hosting your application?

   - A - It will be hosted either on *NIX server, which is extremely
   reliable and powerful.

2. how reliable does it have to be?

   - A - It must be VERY reliable. The Dashboard will be watch by all
   levels of managements and it must be THERE always.

3. how secure does it have to be?

   - A - Secure. Although we are behind several level of firewalls.

4. how much do you want to learn about Ruby, JavaScript, HTML and CSS3?

   - A - I love Ruby and I would like to continue learning it. Today, US
   father's day, I spent over 9 hours already reading about JavaScript and
   going over tutorials.

5. how much data are you sending per second? It sounds like you have a
simple counter with 5 or 6 simple numbers?

   - A - Less than 50 bytes. Only few numbers that I then interpret and
   display on the Dashboard.

I would love to post something, but other than the Ruby/shoes application,
I don't have anything with the new client/server design.

Again, thank you for your help.

···

On Sun, Jun 16, 2013 at 2:33 PM, Nicholas Van Weerdenburg < vanweerd@gmail.com> wrote:

Hi,

First off, I was only writing enthusiastically out of my love of Sinatra,
and only wish to be helpful.

Stepping back, I would suggest considering two of your goals before making
a concrete recommendation:
1. hosting- where and how will you host it?
2. personal goals- what do you want to learn and for what purpose?

Your app sounds simple enough that anything will suffice so long as you
have your streaming solution. And there enough cut-and-paste code examples
that you could event chose to do so with a client-side JavaScript solution
rather than a server-side one.

1. hosting

If you knew Java already, worked in a J2EE shop, and had J2EE hosting in
place, then Sinatra might be overkill because of the upfront learning and
backend deploying and maintenance effort. Of course that assumes a friendly
IT department- Sinatra or similar running from your desk machine may be the
lowest friction solution, assuming that up-time isn't the a huge
requirement.

2- personal goals

I agree with another responder that learning Sinatra helps learn Rails.
But in my opinion Rails is a lot to learn, and I wouldn't recommend it
unless 1) it's fun for you, and/or 2) aligns with your personal goals.

So some questions would be:
1. where do you plan on hosting your application?
2. how reliable does it have to be?
3. how secure does it have to be?
4. how much do you want to learn about Ruby, JavaScript, HTML and CSS3?
5. how much data are you sending per second? It sounds like you have a
simple counter with 5 or 6 simple numbers?

If I were doing this app I would chose the following for maximum
technology hipster fun:
1. node.js with socket.io
2. HTML + jQuery and socket.io for the web page.

But that's mostly silly for the described app, and I do love and highly
recommend Ruby + Sinatra.

And since you've already done a version in Ruby Shoes, Sinatra sounds like
a good bet.

I would also suggest learning jQuery for cut-and-paste logic to add to
your HTML. A dirty-little secret of Rails applications is that they usually
contain more JavaScript then Ruby! So if you want to write significant web
applications in the future JavaScript is a must.

I would suggest creating a pastebin or gist of your code and posting a
link to that. It would be faster to have any further conversation in code.

Cheers,
Nick

On Sat, Jun 15, 2013 at 12:46 PM, Ruby Student <ruby.student@gmail.com>wrote:

Nick and everyone else,

Please accept my apologies if I hurt or insulted anyone feeling with my
blatant and clearly lack of knowledge and understanding. Please let me
elaborate:

I am an AIX system administrator not a programmer, although back on the
'70s I was heavily into assembler programming. I am trying to learn Ruby as
it appears to me kind of much simpler than other languages such as C, Java,
etc. I like simple and easy tools that can help me do my job more efficient.

My statement about "overkill" WAS NOT INTENDED TO BE FOR *Sinatra*. If
you go back you'll find that I was talking about *TomCat*. I meant to
say that perhaps *TomCat* was overkill for the simple thing that I
wanted to do. I started playing with *Sinatra* and I to find it simple
and very easy to learn and use.

As I stated on my original post, I want to create a simple web-based
application, which will be invoked from a browser.
I will read a file every second. The file contains certain information
that changes continuously, 24X7 from January 1 to December 31. This
information collection NEVER stops.

I have NEVER done anything web related, NEVER. Perhaps, due to my lack of
knowledge, I am not posting my question correctly.

I want:

   1. The user to fire up a browser pointing to my server URL
   2. My application will accept the request and send data to the user's
   browser
   3. My application will, every second, read the content of the file
   and get the new counters
   4. Display the new information, counter, on the browser WITHOUT THE
   USER HAVING TO REFRESH IT. In other words, I want to refresh the browser's
   content without user having to do anything. The new information must be
   continuously be updated and displayed.

As I said earlier, I did this using *Ruby/Shoes*, but this needs to be
used by a number of people and I would have to install Ruby and Shoes every
desktop that needs to use this Dashboard.

Someone suggested Javascript but I don't want to start learning yet
another programming tool when I think that Ruby and some web tool such as
Sinatra might be able to help me with this. *Rails* was also suggested.
I am probably still not making any sense!

I do want to thank you and others for all the answers already posted and
perhaps the ones to come.

Ruby Student

On Fri, Jun 14, 2013 at 9:01 PM, Nicholas Van Weerdenburg < >> vanweerd@gmail.com> wrote:

Sinatra is as lightweight and simple a framework you can choose for
doing a web app. You can create a complete app in a single file with
template included!

There is no such thing as Sinatra being overkill for a project. IMHO,
the only simpler alternative is using paper, scissors and glue :slight_smile:

I love Sinatra and highly recommend it for anyone learning web
development. Give it a shot- it's a fantastic piece work.

Did you know that there are dozens, if not more, clones of Sinatra
across different languages?

And the monster framework for the Node.js, Express, is Sinatra inspired?

And as Hassan mentioned, Tomcat is a "servlet" container for Java
servlets. Not really related, and far, far more complicated than using Ruby
and Sinatra. I almost had post-traumatic stress syndrome flashbacks seeing
that word- I haven't use Tomcat in over eight years.

Good luck!

Cheers,
Nick

On Fri, Jun 14, 2013 at 9:14 AM, Ruby Student <ruby.student@gmail.com>wrote:

Well, I got some good suggestions from everyone here. I thank you all
for that!
Now I just need to analyze each suggestion and pick he easiest for me.
I am not by any mean a mature ruby programmer and I like to do things as
easy and simple as possible. If Sinatra is overkill for what I want,
perhaps I should look into something different. I was wondering if TomCat
might be what I need. Anyway, the entire affair is kind of confusing to me
as this is the first time I deal with this type of thing.

As I said, I am very grateful to all of you for taking the time to
answer my post.

On Thu, Jun 13, 2013 at 11:55 PM, Nicholas Van Weerdenburg < >>>> vanweerd@gmail.com> wrote:

You should be able to do this without JavaScript by using streaming.

Sinatra has a streaming API as of 1.3. Rails 4.0 is adding a "live"
mode for similar.

However you need to use a supporting web server and hook into the
event loop (which Rack exposes).

Simple Chat Application using the Sinatra Streaming API · GitHub offers an example, but note that
the heroku app is broken (look at the comments for a link to a patched
version).

Nick

On Thu, Jun 13, 2013 at 5:41 PM, Ruby Student <ruby.student@gmail.com>wrote:

Hell Team,

I wrote a very simple dashboard using *shoes* which basically
displays statistics, every second, of certain type of messages arriving at
a queue under *MQ*. But in order for anyone to use it they have to
install *Ruby*, *shoes *and its requirements. So I started
experimenting with *Sinatra *to re-write my simple application so
anyone could point their *browser* and get the dashboard displayed.
I went over the first *basic Sinatra* tutorial but everything
appears to be static. Is there any example out there that shows *
Sinatra* dynamically refreshing the page continuously with new
information, in my case message queues information?

In other words, once the user successfully get the page displayed,
from that point on I want the content to be refreshed dynamically with the
new information without user intervention.

Thank you

--
Ruby Student

--
Ruby Student

--
Ruby Student

--
Ruby Student

in thin project, there a a async exemple which
is near your expects :

that send out of a 'tail -f /var/log/system.log' to each client.

···

--
Posted via http://www.ruby-forum.com/.

Thanks everyone for your posts. I have received myriads of suggestions
which I totally appreciate. Some people have suggested also using WebSocket
with Javascript. I found, however, that Ruby provides support for
WebSocket. I will look into that.

One important thing I would like everyone to keep in mind, I want the
client (my users) to only have to type a URL and walk away, while their
browsers continue to be updated by the server. I am not sure if this is
doable with WebSocket, but I will read into it.
I really thought and still think that what I want to do is a very simple
thing. The problem is my lack of knowledge and experience with this type of
web application.

Thank you

Ruby Student

···

On Sun, Jun 16, 2013 at 7:42 PM, Regis d'Aubarede <lists@ruby-forum.com>wrote:

in thin project, there a a async exemple which
is near your expects :

thin/example/async_tailer.ru at master · macournoyer/thin · GitHub

that send out of a 'tail -f /var/log/system.log' to each client.

--
Posted via http://www.ruby-forum.com/\.

--
Ruby Student

I really thought and still think that what I want to do is a very simple
thing.

push data to any browser is difficult.
WebSocket is ok for mobile/chrome/firefox/safari, nok for ie
thin demo there : https://gist.github.com/raubarede/5799539

   > gem install thin
   > gem install sinatra
   > gem install sinatra-websocket
   > ruby mouse.rb
   > open http://localhost:4567
   > open http://localhost:4567
   .. move the mouse in first page
   .. look what append in second page :slight_smile:

At my knowledge, in enterprise context, socket.io with node.js is the
only
universal (ready for almost all browsers) solution available

···

--
Posted via http://www.ruby-forum.com/\.