Custom command line options rails 3 Ruby - ruby-on-rails

I am working on a website project that requires ruby 1.8.7 and using am currently rails 3.2. This is a research project and thus maybe a bit "unconventional".
I have a rails server, the manager, that spawns other rails servers which become peers in a P2P network.
I want to pass custom options to my spawned servers to configure them. I thought about doing something like this but it does not seem possible in rails. Does somebody have a suggestion of how to do something similar?
rails server --custom_option="CUSTOM_VALUE"

Will environment variables work?
CUSTOM_OPTION=CUSTOM_VALUE rails s
This should give you access to it:
`$CUSTOM_OPTION`

Related

Web server and application server Ruby on rails

Best practice for Scalable project on ruby on rails. Problem: I don't understand the difference between web and app server in ror projects.
I understood that the differences between application and web servers are webserver handles requests and application has business logic. However I don't quite understand how I can implement it in my ruby on rails application.
So, I have, for example, two instances and ruby on rails application.
On the first server I want to set up a web server, and on the second one I want to install application server.
But, for example, I use passengers as my webserver that makes easier to deploy my ror application. So, will I have any benefits implementing such logic? Can I use passenger as an cache server or something like this? Is it possible to put passenger on another server and send request to ror application? Or I totally wrong and don't understand the conception?
Note: I just found amazon web application hosting architecture and now I'm trying to figure out how I can it implement and how it could work.
Use heroku with puma. That's the easiest to setup.
http://www.justinweiss.com/articles/a-web-server-vs-an-app-server/
https://www.nateberkopec.com/2015/07/29/scaling-ruby-apps-to-1000-rpm.html
https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server

Rails Signalling Server

I am creating an app with Ruby on Rails (4.2). I want to add a WebRTC functionality to it so that two users can choose to videochat with each other. I'd appreciate if you can help with:
What are some of the options to create a signalling server with Rails (I have no Node.js experience)?
Any video tutorial or sample code for creating a simple signalling server with Rails (and even better for using WebRTC)?
Thanks.
There is no need for you to implement a signalling server. Run an existing one independent of your rails app.
E.g. if you're using SIP have a look at Kamailio or Asterisk. Or in your case something like Signalmaster might be easier.
The signalling "part" of your application will be independent of your rails application.
Except for the client-code which will probably run inside the same page (javascript environment) in your browser.

How can I deploy ruby on rails application to mochahost using capistrano?

I am new to ruby on rails deployment. I have created my first simple ruby on rails application, but I am struggling to properly get it onto my server.
In my research, I learned about the various ways to deploy a ror app to my own server, and it seems that using capistrano would be the way to do it. However, it is not clear to me how to use capistrano to launch my app.
What are the steps that I need to take in order to launch my app? Do I need to use git, I prefer not to.. I don't want to use Heroku.
It just seems that deploying the application should be really easy and I am struggling with it. If I am using the non-optimal tools let me know.
thanks
Capistrano is primarily used to deploy apps, not to launch them. Capistrano is of course capable of launching Rails apps, but how to do that depends on how your app is set up.
You should do some research on using nginx (HTTP server) and Unicorn (Rack server) together with Capistrano. It might take some time setting everything up, but once in working condition, they’ll make deploying your app close to enjoyable.
Regarding actually deploying your app: Heroku is not required in order to use Git, but if you really don’t want to use any kind of versions system (though I highly recommend that you do), this blog post might help you on your way: http://www.maxkpage.com/blog/capistrano-rails-deploy-without-svn-or-git/

Ruby on rails and Node.js

I am wondering how to integrate node.js on a rails app (for learning purpose).
Based on Michael Hartl tutorial (http://railstutorial.org/) I realized a basic twitter clone with rails and want to get user microposts in real-time without the use of comet or juggernaut. (the application is hosted on heroku)
For the moment, I only see example with node.js frameworks (http://howtonode.org/grasshopper-shoutbox) but nothing merged with a ruby on rails app.
I would be very thankful if someone knows a good tutorial or give me some points to start in order to accomplish this.
Thanks!
As Shripad said, I'd consider trying to build your app with Node by itself. Geddy will feel familiar (getting started anyway) if you have experience with Rails. Note: I do not have experience on a real world app with Geddy, but it is the best Rails-like framework I've seen so far. For persistence you can use SQLite, PostgreSQL or CouchDB, just like you would with Rails. I thought about how to communicate between a Rails app and Node without any intermediary. In our work project we're using Redis as an intermediary between Rails and Node. Rails publishes messages to Redis, Node pulls messages from Redis. I could not find a good way or example projects to avoid the middle communication layer on a personal project, so I went with the same setup. The good news is Node Redis modules are written and once you get everything installed, it is easy to test out pushing messages back and forth.
If you are looking at creating real-time apps then go with node.js (high concurrency) alone. You really cannot integrate node.js into a rails app. You can however have a node server setup on another port with an api and websockets configured and then have your rails app communicate with that server. It is PITA to do that kind of setup. You rather build the entire web app in node itself. However, if you want anything rails specific that does not use juggernaut then i would suggest http://www.pusherapp.com.
Its extremely easy to setup server push using Pusher.
It already did. Not really NodeJs but a framework built on top if it. Yada, yada, yada... check this out: https://github.com/1602/express-on-railway
**Run node along side your rails server**
If you want to intergrate your Rails app with Node you could use the node-rails gem
Node Rails will enable you to run a Node server along side your Rails application and have the two share authentication NodeRails assumes you are using Devise for your authentication. Node-Rails uses [redis gem][2] , so you will need to have that installed.
Learn more about using npm packages on Rails.

deploying rails app to production environment

I've been playing around with a rails app and showing the customer the updates by deploying it on heroku. Now the customer wants it set up on their on server...as a live site.
Heroku made deploying rails app so simple that I can not wrap my head around starting from scratch on a server.
To the experienced rails developers, what all is required to do this? My app uses postgresql and the server is a linux server. The customer claims that they have installed rails on the server.
Do I just have to install postgresql...create the DB...run migrations and voila? or is there other stuff involved as well. Up till now I was working with development section of database.yml...now it will pick up production?
Please give some pointers and/or links that explain the process.
I think capistrano web page has a decent how-to tutorial on where to start from.
Well, think about this: what does a rails app need?
Ruby
Rails (the version you used for your app!)
Ruby gems you use
Rails plugins you use
A database with proper login/password access
If you use the RAILS_ENV environment variable, and set it to production, you won't have to worry about it for the next steps, otherwise REMEMBER TO DO THIS FOR THE PRODUCTION ENVIRONMENT!
You can use rake db:schema:load to set up the database, and then.. Well, make sure it loads at startup automatically, make sure you have whatever preloaded data you need, make sure it's accessible from the outside, or from wherever it needs to be accessed.
I don't know if there is anything else you need for the rails app -- but of course, Capistrano is a good idea, to help you maintain the app :)
You probably need to decide which server software you're going to use first, because that's not something that Heroku give you a decision about. Anyway, it's easy because Phusion Passenger is the default choice in the Rails world now. Passenger is easy to set up—it has probably the best command-line setup program I've ever seen—and the documentation is excellent.
Slicehost have a whole series of articles that cover setting up the various bits you need for various flavours of Linux. They really are excellent:
http://articles.slicehost.com/search?q=rails
You'll also need to learn how to use Capistrano, which is what most people use for deploying Rails apps.
Is there a reason why you can't use Heroku as your production environment?
Edit:
If they're running a php webserver the chances are they already have a functioning apache server. If this is the case you should look in to installing passenger and setting up a new database.
At this point you can either copy up your application yourself, run your rake tasks to get everything setup and then sit back and relax, or you can spend the time to learn how to use capistrano so you can repeatably deploy your application.
I suggest the latter... capistrano really isn't that tricky and assuming your application set up is relatively sane the defaults should get you 90% of the way there.

Resources