From: Nicholas Van Weerdenburg Date: 2013-06-17T03:33:52+09:00 Subject: Re: Can I use Sinatra to render dynamic pages? --001a11c3ae6a9bfc8404df49b887 Content-Type: text/plain; charset=ISO-8859-1 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 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 :) >> >> 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 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). >>>> >>>> https://gist.github.com/rkh/1476463 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 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 > --001a11c3ae6a9bfc8404df49b887 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
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 consider= ing two of your goals before making a concrete recommendation:
1. hosting- where and how will you host it?
2. p= ersonal goals- what do you want to learn and for what purpose?

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

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

2- =A0personal goals
=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
I agree with another resp= onder 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 y= ou, and/or 2) aligns with your personal goals.


So some questions woul= d 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 an= d CSS3?=A0
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 f= or 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 describ= ed app, and I do love and highly recommend Ruby + Sinatra.
=
And since you've already done a version in Ruby Sh= oes, Sinatra sounds like a good bet.

I would also suggest learning jQuery for cu= t-and-paste logic to add to your HTML. A dirty-little secret of Rails appli= cations is that they usually contain more JavaScript then Ruby! So if you w= ant to write significant web applications in the future JavaScript is a mus= t.

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

Cheers,
Nick

=

On Sat, Jun 15, 2013 at 12:46 PM, Ruby S= tudent <ruby.student@gmail.com> wrote:
Nick and everyone else,

Please accept my apologies if I hur= t 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, a= lthough 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 l= anguages such as C, Java, etc. I like simple and easy tools that can help m= e do my job more efficient.

My statement about "overkill" WAS NOT INTENDED TO BE FO= R Sinatra. If you go back you'll find that I was talking about <= b>TomCat. I meant to say that perhaps TomCat was overkill for the simple thing that I wanted to do. I started pla= ying 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-ba= sed application, which will be invoked from a browser.
I will read= a file every second. The file contains certain information that changes co= ntinuously, 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.
<= div>
I want:

  1. The user to fire up a browser poi= nting 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 wa= nt 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 a= nd I would have to install Ruby and Shoes every desktop that needs to use t= his Dashboard.

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

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

Ruby St= udent


On Fri, Jun 14, 2013 at 9:01 PM, Nichola= s Van Weerdenburg <vanweerd@gmail.com> wrote:
Sinatra is as lightweight and simple a framework you can c= hoose for doing a web app. =A0You can create a complete app in a single fil= e with template included!

There is no such thing as Sina= tra being overkill for a project. IMHO, the only simpler alternative is usi= ng paper, scissors and glue :)

I love Sinatra and highly recommend it for anyone learn= ing 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, a= nd far, far more complicated than using Ruby and Sinatra. I almost had post= -traumatic stress syndrome flashbacks seeing that word- I haven't use T= omcat in over eight years.

Good luck!

Cheers,
N= ick


On Fri, Jun 14, 2013 at 9:14 AM, Ruby Student <<= a href=3D"mailto:ruby.student@gmail.com" target=3D"_blank">ruby.student@gma= il.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 no= t 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 shoul= d 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 f= irst time I deal with this type of thing.

As I said, I am very grateful to all of you for taking the time t= o 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.

Sin= atra 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 th= e event loop (which Rack exposes).

https://gist.github.com/= rkh/1476463 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 Stu= dent <ruby.student@gmail.com> wrote:
H= ell Team,

I wrote a very simple dashboard using shoes w= hich basically displays statistics, every second, of certain type of messag= es arriving at a queue under MQ. But in order for anyon= e to use it they have to install Ruby, shoes and= its requirements. So I started experimenting with Sinatra to re-wri= te my simple application so anyone could point their browser and get= the dashboard displayed. I went over the first basic Sinatra tutori= al 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 disp= layed, from that point on I want the content to be refreshed dynamically wi= th the new information without user intervention.

Thank y= ou

--
Ruby Student
=



--
Ruby Student




--
Ruby Student

--001a11c3ae6a9bfc8404df49b887--