Vagrant VM and auto-starting Ruby on Rails Server - ruby-on-rails

Our team is just starting to experiment with Vagrant as a way to manage our development environment across a very diverse team (multiple developers, designers, UX engineers and stakeholders), so it seems like the perfect solution for us.
Due to the diversity of the team, I would prefer to be able to avoid the part of the Vagrant process where the user needs to SSH into the VM in order to start the server. I know that it's possible to edit the startup files (We're using Ubuntu as the VM base) for the VM, and also that it's possible to edit Vagrant plugins, and based on what I'm reading, it appears that both possible solutions can give us the desired activity. What I don't know is what's considered the best practice for this problem. I'm very new to the Vagrant space, so I'm reaching out in the hopes that someone can provide insight as to what the best way to accomplish this goal is.
Or, if anyone knows of a reusable example of how to accomplish this goal that's floating around, that would be appreciated as well.
Thanks in advance.

We ended up simply writing Vagrant plugins right inside our Vagrantfile for the project. Perhaps not the best way, but effective for our personal situation.

Related

ROS/ROS2 for multi agent system

Does anybody know how to use ROS/ROS2 for the multi-agent system? I know there are other software for multi agent, but I heard that ROS is suitable for this. Does anybody know the specific ideas?
ROS is a middleware framework for creating a distributed system of nodes based on the publish/subscribe methodology. It can certainly be used for a multi-agent system. You should read through the ros wiki. It has a lot of great info and is a very easy way to start learning the ideas.
we're currently working on a BDI framework for ROS2 targeting Multi Agent Systems (MAS), thus facilitating its development. Repository is here and user's documentation here. The plans are dynamically computed via a PDDL 2.1 based planning system (which is PlanSys2). It's still under development, so there can be bugs here and there. We're currently try to solve them and then the idea is to lean toward a more flexible reasoning behaviour, while keeping in consideration real time constraints and/or computational feasibility of the plan execution.
If that might fulfill your needs, give it a look and share your feedback!

Alternative to Windows and cloud for Ruby on Rails

I'm starting to learn Ruby on Rails and after a week I still cannot get the installation right. I've since moved to a cloud bases system, but it is extremely slow and rather a waste of time.
I do have a website and saw there's Ruby on Rails. Is it perhaps possible to set it up in a domain or sub domain and start and start learning/programming that way?
Any other alternatives is also welcome. I do now own a mac or Ubuntu, which makes it a little difficult.
Looking forward to your responses. In the meantime I'm installing/uninstalling and trying to see if I can somehow make it work on Windows.
Doing RoR development on Windows is a pain. I would suggest just uninstalling Windows and going for some Linux distribution if you are serious about learning RoR. Linux is free software so the only thing holding you back from having it on your computer is your self.
Developing with Ruby on Rails is say'd to be really easy for beginners but I would disagree with it. Developing on this framework requires you to actually understand the whole stack. The server, backend, client, database and ofcourse a new weird language called Ruby. Now most of this stuff is learnable and doable on every OS. But once you start messing with more advanced databases and servers, you will need some GNU utils from Linux.
For instance if you have made your first deployment to some external server, you will often need to know what is going on in there. The only way to do this is usually by going in that server with SSH and reading the logs. But doing that is difficult without a nice GUI. So now you have to learn some stuff like the tail and grep commands and Linux piping to find your info easily.
Also if the computer you use is not completely yours and you cannot do it on it, then try installing a virtual machine software like Virtual box.
With that you can install Ruby on a Linux that sits on your VM and use it like that. It will still be a bit slower but if your computer has decent hardware in it, you will still be happy with it.
Here is a guide on how you could do it: Guide for VM development

Which Amazon Machine Image to choose - Ruby on Rails

I was looking for a little advice on which machine image to choose using amazon EC2. It seems Linux and Ubuntu are the most popular. What is the disadvantages or advantages of choosing one or the other?
I guess it would depend on your experience with Linux. If you are new to Linux, I guess I would start with Ubuntu. If you run in to trouble it is quite well prevalent and there are a lot of tutorials, forums and search results that you can more then likely learn from. So, it should be easy for you to use. It looks like Ubuntu would be no cost to use. In regards to Amazon Linux, it looks pretty good as well. I haven't tried it, but from what I read on Amazon's site it looks like it provides everything you would need and it is free. It uses yum to install packages, so the syntax is different. You probably could find help or get other questions answered on Amazon's forums. Between the two if I had to choose I would go with Ubuntu, it's free and you can find a lot of information on it. So it should be easy to get up and running. In terms of support I would say both seem to be equal. I am not sure you would have too much trouble finding a package you would need for Ubuntu and I can't imagine Amazon would not be actively supporting their Linux distro. Hope this helps.
Mike Riley

Developing Ruby and Rails in Windows? Or Linux VM

I've been doing front end web work for a while. I maintain several company websites and etc, mostly on Joomla. I'm getting bored with it and I really want to expand in to development. I have a few web app ideas for the company and some personal stuff I'd like to do.
Ive decided I want to learn Ruby and Rails and have been pursuing it for about a month now. I read a lot of tutorials and work through stuff I find online. I'm also diving in to git and trying to use it more.
I feel like Windows is not going to be conducive to me getting efficient at this. I know that you can, and some do, develop in Windows but I'm wondering if its time for me to move past it.
I picked Ruby to be my first real programming language because of the simplicity I read about. For both Ruby and RoR and I want to be able to learn a language that will let me build apps and web apps that are cross platform.
On to the problem, I can't immerse myself completely in a linux world. I have to have photoshop and indesign for part of my job. So I'm thinking maybe I should just do a live usb key install and take it back and forth between work and home. Is that a better solution than dual booting for what I want to do? I also realize that a mac would give me the best of both worlds, but I am budget constrained and I can't make that leap yet.
Also, is there a good place to hang out to learn more? I have paid codeschool and tutsplus accounts. Should I be back on IRC? What do you think? I'm looking for guidance more than anything I guess. I feel kind of lost on where to go how to not waste time and start developing real skills. Thanks.
You should also checkout the vagrant project which creates headless (non-gui) VMs and makes it easier to work with your files, etc in Windows while the code actually gets run on the Vagrant VM. Also, since its headless, the graphical UI isn't eating up resources and has less impact on your host machine.
Check out these resources:
http://www.vagrantup.com/
http://blog.dcxn.com/2013/07/12/introduction-to-vagrant-for-rails-developers/
http://railscasts.com/episodes/292-virtual-machines-with-vagrant
*Also if you're learning Rails, you MUST checkout Railscasts http://railscasts.com/
The last thing I knew about this is that:
In Linux you can use RVM which handles pretty well everything about your Ruby environment. In Windows I tried pik, but it does not have support to install newer Rubies.
Also, Linux console is much friendlier than Windows one, regarding appearance and functionality. I have explored console2 for Windows, but it did not feel so comfortable that time.
In Linux you have plugins like oh-my-zsh which allows you to speed up your development. But maybe there are kind of this plugin for Windows.
Other than those, I don't know why you should choose Linux VM.
I've developed a Rails app under Windows, and it turned out to be a huge mistake. Near the end of the development, I had to make my webapp multithreaded. The default Rails server does not allow multithreading, and all the alternative servers are either Linux-only, or I couldn't get them to work.
I also considered using JRuby(because Java threads), but by then my app was too big to convert to JRuby(there are some syntax differences that I couldn't track, and I relayed on some gems that don't work on JRuby). However, if you go for JRuby from the beginning, you might be able to pull it off.

Can anyone recommend best practices for profiling Ruby on Rails software under Passenger/nginx combination in a live server environment?

I am attempting to determine what can possibly be the causative factor for 20+ second response times from a Rails 3 application located in EC2 using Elasticache. I have reason to believe the problem is in fact cache related, but I have no numbers to prove it. I'd like to get those numbers. For the sake of completeness, we're running the applications atop Ubuntu 12.04 .
Searching Google, I found nothing directly relevant to my situation, and no StackOverflow topics I could find were even remotely relevant to my situation. If anyone can point me to some documentation on the matter, I'd be quite appreciative. Thank you!
I've found the best tool for this to be New Relic.
http://newrelic.com/
I don't work for them and get no benefit from you trying them.
They have a free level that you can start with. If you go up to the non-free version you can literally trace all your requests through different models and into the database telling you how long the app spent in each section. It's a great tool for profiling.
Do you, by any chance have access to standard web logs including URLs and response times?
I faced a similar situation, searched the web, found nothing relevant, and eventually decided to roll my own, which I shared in this SO post:
Profiling a multi-tiered, distributed, web application (server side)
While it is far from perfect and may be too high level for some use-cases, it gave me a pretty quick and broad insight into where the application I was trying to profile is spending most of its time in, and what the slowest parts are. HTH.
The best parts of it are that:
It is 100% platform and programming language independent.
It is a 100% free software solution

Resources