How to change code on live Ruby On Rails - ruby-on-rails

I am new to Ruby on Rails.
I have a site deployed on server and I'm accessing it with putty with hostIP and an RSA key.
How can I update the code on the deployed site? If the code is modified, do we have to rebuild (or run) the code?

Just edit the code using editor (vim, nano, or whatever), then restart your web server. But that's not the right way to do it. You should edit it in your local machine, and use a deployment tool like Capistrano. See below.
https://www.digitalocean.com/community/tutorials/how-to-automate-ruby-on-rails-application-deployments-using-capistrano

Modify the code with your favourite editor(vim/emacs/Sublime Text...) or IDE like Rubymine, save the change,
Refresh your webpage, your modification should take effect.

Related

AWS Cloud9 Server refuses to connect

So I'm trying to make a website for school and I've been following this guys tutorial on how to make a website. But for some reason when I get to lesson 32 and I enter the ec2-user:~/environment/blog $ rails server -b $IP -p $PORT command, the website doesnt run and it says " somenumbersandletters.vfs.cloud9.us-east-2.amazonaws.com refused to connect " with an error. I've followed all the steps correctly (Except for the directory he runs it from, I run it straight from blog instead of environment because it tells me I need to make a new app the other way). I've tried disabling my firewall, I've enabled Cookies and searched the internet for a solution. I am very new to Servers and Coding and any help would be greatly appreciated!
This is my Terminal Log
Answer from https://www.reddit.com/r/aws/comments/cwnbt1/aws_cloud9_server_refuses_to_connect/
Once you start the rails server, click the 'preview' button. When this tells you that it refuses to connect, find the button that looks like two overlapping squares with an arrow to "pop out into a new window." Once it was in a new tab, it worked like a charm.
Hope this helps!
I ran into this issue as well. I could view my rails application when viewing it from within a new tab, but not within the Cloud 9 IDE tab.
If you look in the browser console when viewing through the tab, you will see this error:
Refused to display 'https://xxxxxxxxxxxxxxxxxxxxxxx.vfs.cloud9.xxxxxxxxxxx.amazonaws.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
This error is being caused because you are viewing the rails application through an iFrame via the Cloud 9 IDE. By default to add security and hinder Cross Site Scripting (XSS) attacks, Rails sets SAMEORIGIN for the X-Fram-Options header. This will not allow the rails app to be visible in the Cloud 9 IDE tab using the iFrame.
In order to bypass this, you will need to set this header to use ALLOWALL instead.
NOTE: Only do this within your development environment and never in a production environment. This could open your site up to XSS attacks.
Add the following configuration option to your config/environments/development.rb file:
config.action_dispatch.default_headers = {
'X-Frame-Options' => 'ALLOWALL'
}
After saving the changes, restart your rails server and the application should now be visible within the Cloud 9 IDE tab directly.

Correct file in production mode Ruby on rails

In my web site, i found a mistake inside a text on my html (langage => language)
I change directly here /app/views/ with vi text editor but when I reload my page (after navigator history cleanning). The mistake is still here
There is a kind of step to take in account the modification?
Thanks in advance
In Production you normally have to restart the server for changes to take place

Deploying Website with Migration using FTP

I have an asp.net MVC website making extensive use of ef and migrations.
i have tried deploying it to a system running windows 10 on a local network but seems like ms has removed that options from the latest release and now deployment using web deploy is only possible on server os's.
No trying to do the same using FTP.
whats the ay to deploy using ftp on a local server. I have already setup FTP publishing but cant seem to figure out how to deploy the db and configure the app to run code first migration after every deploy.
The accepted answer in this forum post helped me out with this exact issue. I added the code given there to Application_Start in my Global.asax.cs
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyObjectContext, MyObjextContextMigration>());
MyObjectContext contexttest= new MyObjectContext();
contexttest.Database.Initialize(true);
Just be aware that this will run your seed method every time you visit your site (at least it did for me). In my configuration.cs I put in a check to see if data existed in my tables, if that data was null then it was ok to seed that table, etc.

rails view not updating

I have started with my first rails project using Redmine. I have started to dig into the code to get a better idea and having a hard time understanding the erb files. When I go to make a simple change to the welcome.html.erb file, I make the change and check in the browser and there is no change. Once I save a file is there something that I need to run before the view will be updated? I did not think so, but that is why I am here asking because the view will not update the page when I save the file.
Thank you in advance for any help.
UPDATE: After I update the .html.erb file and open it up again in vim, my changes are still there. Only problem is that the page does not reflect what the change has been made to and when I view source it is not there either?????
It looks as though my cloud server is slow to update the pages so I need to check and see why this is. There is no problem with the pages when working locally and the page was updated in the source the next morning.
Using an IDE is not a good idea when you're learning Rails.
Try opening a console and cd into your application directory. Then run rails s and you should see your application running on a browser when you point to localhost:3000
You can leave the server running and modify your view file with any text editor. Changes should reflect automatically without even need to restart the server.
HTH!

Make local development work with Facebook/Google APIs

I'm working on implementing omniauth into a Rails project. My problem is that the authentication providers - Twitter, Google, Facebook etc all require me to create an application with a url that limits authentication requests from anywhere other than the url. I need to be able to to test locally but also run code in production, but Facebook for example doesn't allow 2 domains and doesn't allow localhost anyhow.
So what are my options?
At work, we have multiple applications setup for the different environments. On local, add an entry in /etc/hosts (assuming you are on linux) eg: 127.0.0.1 mydomain.local.
On the facebook app setup for the local environment, add this as the url. Most things, except where facebook needs to scrape your site (Like buttons) work.
Here's a blog post with my solution: http://make.bettermistak.es/2012/05/03/how-to-create-a-local-sandbox-facebook-app/
Here's the relevant bit: "Facebook verifies that all requests for your app are coming from the right domain–they don’t allow requests from localhost or 127.0.0.1–and this info can be updated in your apps settings under Hosting URL. Add “local.herokuapp.com” to your Hosting URLs and save this setting. Then edit your /etc/hosts file so that local content is under the domain local.herokuapp.com. This file is hidden, so from the command line enter sudo vi /etc/hosts. (Substitute your favorite editor for vi.) We need to use sudo, because this file is locked. Add the line “127.0.0.1 local.herokuapp.com” below “127.0.0.1 localhost” and save and quit your text editor."
As far as I know, you must sing up two apps for you app.(one for remote side, one for local side)
Fortunately, there is a way to reduce the complication(Assuming you are working on linux):
You can configure you .bash_profile (local machine and remote machine separately):
export YOURAPP_APP_ID="XXXXX"
export YOURAPP_APP_SECRET="XXXXX"
And use ENV['YOURAPP_APP_ID'] and ENV['YOURAPP_APP_SECRET'] in your code.
For example, you can code like this in rails:
config.omniauth :facebook, ENV['YOURAPP_APP_ID'], ENV['YOURAPP_APP_SECRET']
By this way, you can use the same code in both local and remote side. It will be much easier for maintaining.
If you are using Heroku to host your application, you can refer to this page to config the environment variables.
I have created two apps on Facebook one of which i run in sandbox mode for development purposes. Would that be an option for you?

Resources