Deploy ruby on rails application built on windows - ruby

I'm looking on ways to deploy a ruby on rails 4 app built on windows 7 box. I'm looking to use Heroku at the moment.
Can you please provide any pointers regarding heroku or any other easier and cheaper deployment options available out there..
Any issues That I may face due to the difference in OS in the dev environment (windows) and the deployment environment (linux on heroku)?
This is my first professional app, so any pointers will be helpful for now and also for future applications that I may work on.
Also what is the more preferred OS for ruby on rails development ?
Thanks in Advance!

You probably won't face any issues with deployment on Heroku. Heroku is the easiest option out there (albeit one of the priciest once you're off the free tier)
What's more likely to happen on Windows is that you'll find it hard to build certain gems for development, and cutting edge releases will probably not work well.
Much better to pick up a Linux distro for this.

You can also check out bluemix , which is also free for small projects. I know Heroku is not particularly windows friendly, not sure if bluemix is any better in that reguard, but it is extremely easy to deploy to.

Heroku has set of tools called heroku toolbelt, that makes easy to deploy apps to heroku. you can download heroku tool belt for windows from here
Generally you should be able to port any rails app you develop in windows to Linux/Mac, how ever since the ruby/rails community is largely built around Linux/Mac, responses/options to your issues regarding the rails apps will be low. and there are some gems which doesn't work on windows at all. So its best to move to either Mac/Linux if you are planing to continue on rails.
Once you come to Linux/mac world there are lots of providers much cheaper than heroku like DigitelOcean, however heroku would be the easiest for a beginner I believe.
HTH

One strategy you could try is to do the following:
Set up a VirtualBox or VMWare VM running Linux (Ubuntu would be a good candidate if you are not used to Linux).
Get your project into the VM and get the bundle install and everything working in Linux, you will probably find you need to make some changes in your Gemfile if you have anything windows specific there.
Install the Heroku tool-belt on the Linux VM and install to Heroku from there.
Taking the Windows / Linux transition pain on your local machine will make it much easier than Windows direct to Heroku.

Related

How to build and deploy iOS application in a cloud?

I have an iOS application, which I can build and deploy with my MacBook.
Now I would like to automate this for CI/CD.
Is it possible?
I found following ways:
MacOS under Oracle Virtual box on non Mac machine. Works but in gray legal zone.
AWS mac.metal instance. Too expensive, since they require to rent instance for at least 24 hours.
CircleCI. Problems with 2-factor authorization.
Is there any common, clean and accepted way to do this?
Github Actions (documentation) supports building on macOS. That's probably going to be the easiest method for many people, because it's all built into Github, which is what almost everyone is using.

IDE/Hosting issues w/ Meteor/WebStorm/Cloud9

My next work project is going to be using the Meteor framework. Our team recently got licensed to use WebStorm IDE, which has been our favorite up until this point. so we were planning on continuing the project with it.
That is, until it was time to install it. Then we found out that the Windows version of Meteor is only partially finished, and all of our development PC's are windows based.
So we were considering as a work-around for this, we may use Cloud9 as our development IDE, as it supports Meteor. The sharing functions may help our team productivity a bit as well.
But this has some problems...
First, we just invested in WebStorm, so we would ideally like to use it as our primary IDE. But I do not know how we would be able to work with WebStorm if we can not run an up to date version of Meteor on our windows systems?
Second, I'm not sure if it's even possible to use Cloud9 as the development IDE, but then move the C9 project over to our Ubuntu server for hosting when it is time to go live?
Third, even if we could deploy to our Ubuntu server after C9, we plan on many updates to our live application after deployment. I'm not sure if there would be issues with this if our development is on C9 and deployment on a completely different server.
So I'm wondering if anyone has a potential solution for these issues? Is there any way for us to work with Meteor on our live Ubuntu server, or Cloud9, from WebStorm on our Windows systems? Or any way we could integrate Cloud9 and WebStorm together for the best of both worlds? Or any way we could use a Linux emulator or something to allow us to use Meteor on our local windows system, without making it difficult for multiple developers to work on the project at the same time?
Thanks in advance!
The Windows port of Meteor actually is working quite well; the only major issue is that mobile development doesn't work. That is going to be fixed in Meteor 1.1 anyway, whose primary goal is to get Windows support up to that of Linux and Mac OS X.
As the user who initially pushed for Webstorm to add Meteor support back in October 2012, I'd recommend starting with Webstorm and Meteor on Windows right away, unless you need mobile development. In that case, you need native *nix machine (an Ubuntu VM on Windows won't be able to run the Android emulator, for example).
WebStorm also supports server-side Meteor debugging, and they're pretty responsive when it comes to fixing bugs you report on YouTrack. See for example https://youtrack.jetbrains.com/issue/WEB-13490
With Cloud9, you cannot currently SSH into a workspace you have, so a hybrid Webstorm/Cloud9 situation might not be doable at this point.
As for deploying your stuff from Cloud9, that is very doable. There's some documentation here about that: https://docs.c9.io/v1.0/docs/deploying-via-the-command-line

I have a windows pc, can I develop with LAMP?

I have a pc running windows but I want to use a linux server. Is there a way for me to develop my website on my computer before I rent space on a server? Also its probably important to note that I have no linux experience. Should I just stick with wamp?
Unless you specifically and purposely use .NET features in your PHP Application, then an application developed in WAMP will work fine on a LAMP Server as long as you have included all the same PHP plugins.
PHP is independent from Linux or Windows. 99.9% of the time you have to knowingly use features from the host OS.
You should try ubuntu in a virtualbox, there are lots of well written guides that'll get you up and running.
For best performance, use coLinux. Install a linux distro like ubuntu (easier for beginners) and you should be ok.
Yes. I have developed and maintained a website like this before. My development environment was WAMP and the server was a LAMP shared server. Shouldn't be a problem till your site is using fairly basic libraries and they are available both for windows/linux.
However as others mentioned, its wiser to have the development environment as close possible to the production environment. You don't hit any surprises that way. And hey its not difficult and involves no cost:
You can use dual boot to have linux as other operating system.
Depending on your machine, you can just install VirtualBox and install a Linux VM.

Is there an online application simulator somewhere?

I've developed some Java applications and wrapped them in exe files, some of them require JDIC files, the apps run on Windows systems, since my PC is all setup for development, it has all the necessary parts, but if a user downloads and runs my apps, they may not work as I thought. So I wonder if there is any place online that I can upload my apps and try to run them in a Windows environment and see if they work in the simulation ?
Frank
Consider using VirtualPC. You can get licensing for free.
Also you can get images from MS site for various versions of Windows to test with - supposedly for browser compatibility but you can use them for other things (which may or may not violate the EULA).
Consider using VMWare Workstation. You can get licensing for free.
You could use Amazon's EC2 instances to get easy access to virtual Windows machines. There is a bit of set up involved, but once you've done that you can spin up new machines easily enough. There are a number of tutorials online.
However, doing it locally with virtual windows instances is going to be even easier. I'd second VMware workstation or player.
You can download trial Windows server images directly from Microsoft for free.

Setting up dev server for Ruby

I want to make a development server for Ruby. (I have done this for IIS and a LAMP set up, but am by no means proficient at it.) What will I need besides the actual server (which I already have)? And also any security issues? I know I could dev locally on my machine, but don't want to do that.
First off when doing ruby development the first thing to know is that it works best in a unix like environment, so mac os x, linux, solaris, bsd, etc...
Ruby libraries are distributed and packaged as gems. So you'll want to install ruby and install rubygems. Then from there on you use the gem command for installing ruby libraries.
I'm going to assume you're talking about doing web development with either ruby on rails 2.x or Merb 1.x. The two frameworks are merging in the next release and it'll be called Rails 3.0. So the answer here works for either one. I'm going to say Rails, but i mean Rails/Merb.
Rails development is done locally on your machine. So you'll need to install ruby and all the libraries you need locally. I know many people who use Windows end up using virtualization and running a linux environment for rails within their desktop windows box.
In development most people use an application server, Mongrel. In production the current standard is to use Apache 2 and Passenger.
With rails you're going to want to use source control. Most people today use git in the rails community, but it's possible to use subversion, perforce, or many other SCM's. To get your application from your source control to your staging and production systems, the rails community created an application called Capistrano. It handles deployments. You setup your server information, ssh keys, define access, and then you can release your application with a single command.
cap deploy
It's a pretty good system. Back several years ago now when i was working on odeo.com we had people using windows, linux, and mac's all for development with production deploys to debian linux. It wasn't intentional that our application be cross platform, it just worked out that way because we had people who wanted to add to it, including designers and biz types, who were on windows.
I highly recommend you check out http://guides.rubyonrails.com for more information.

Resources