SASS: After every change have to reboot my server - ruby-on-rails

Using: rails4 app
Command: For Connecting and Rebooting in order to see the change.
rake assets:precompile
and
control + c
rails s
Is it normal!! Because, sometime I have to do a lot of change and I don't want to reboot the rails server 2000 times per hour.
It's development machine.
Suggestions would be appreciated.

I'm not sure why you're precompiling while still making changes to your SASS.
During development, if making frequent changes to SASS, I'll have cleaned my assets out and the server will pick up and compile these changes as I make them.
rake assets:precompile
is only used when I push to production
There is some guidance here: http://guides.rubyonrails.org/asset_pipeline.html#local-precompilation on why you might want to precompile locally, but I can't speak for your own projects.
I had a lot of headaches when trying to edit js files and refresh them while my assets were precompiled and they all went away went I ditched it in dev.

I solve it with this command
rake assets:clobber
Thanks anyway.

Related

Correct procedure to change location of asset compilation with Heroku

I want to change from having Heroku pre-compile the assets to pre-compiling them on development and pushing them to Heroku. I understand the basic procedure is
RAILS_ENV=production bundle exec rake assets:precompile
git add .
git commit -m 'Add precompiled Assets'
git push production master
However, this wipes out any existing assets on heroku. For instance, images referenced in old emails are wiped out. Is there a way to do this and provide a continuity with legacy assets?
Based on some help from Heroku support and the comments from Schneems below, here is the non-answer I came to.
Unless you understand the intricacies of managing your assets with sprockets, precompile on heroku rather than locally.
Whether you precompile locally or heroku, use a CDN and set far future expire dates on your assets.
Use the latest version of sprockets (3.7.1 as the time of writing this post).
If you precompile locally, be aware that sprockets does keep the last three copies of the assets around, and keep in mind it is up to you to keep your assets consistent with the last release.
There are many edge cases, so there is no such thing as a simple answer that suits the stack overflow format.
So in summary, unless you are highly knowledgeable or courageous, do not precompile locally.
And finally, use a CDN.

Can I force Heroku to compile the assets?

I used to develop a project on my own and now I have got some others to help in the project. It's developed with Ruby on Rails and we have a staging server on Heroku. Beforehand the deployment workflow is to precompile the assets in local machine then push the code to heroku. It works well when I am on my own.
Now I am working with a Front-end engineer. The problem is we are working in different location so it is difficult to setup his computer the same as mine. As a result, he will not be able to precompile the code before pushing to heroku.
Of course I can do it for him but would be better if he can just submit the code to the staging server and let Heroku to precompile it. I think Heroku detect if the manifest file is available to determine if it needs to precompile. Is there a way to force Heroku to recompile the assets?
I have tried: heroku run rake assets:clean then heroku run rake assets:precompile but no luck...
Heroku's servers use a read-only file system. This is how they make it easy for you to spin up more dynos, among other things.
Compiling Rails assets means taking the source files and compiling a new file, i.e. writing a file to the file system. Since this can't happen on a read-only file system, you have to precompile first. Even if you did manage to compile assets on Heroku, by writing to the /tmp directory, at the end of the day when Heroku reboots dynos, your new files will be gone because they weren't checked into the repo as they would've been if you had precompiled them locally, committed them, and then pushed to Heroku.
Any workaround I can imagine would be more complicated than helping your front end dev setup Rails and bundle installing the gems needed to precompile before pushing.

How to restabilize my rails project?

I have a rails 3.2.1 project that after having some troubles deploying to heroku, I deleted the vendor/ folder which caused a slew of issues relating to missing gems, dependency issues, etc.
Now it seems every time I either try running bundle install, or rake assets:precompile, or trying to push to Heroku, I'm met with one bug after another. Fixing one just causes another.
What can I do to nuke my environment clean and start completely from scratch?

rake assets precompile failed

When I run bundle exec rake assets:precompile --trace, my precompilation fails but I cannot see any specific reason for it.
See this pastebin for my output: http://pastebin.com/zggZyPyM
Precompiling assets takes a lot of memory. ~=400mb in my case. It might be possible that OS is killing of the process due to excessive memory usage. You can check the syslog to verify if that is the case.
You can increase the memory of your server to avoid the situation. If that is not possible, I would suggest that you precompile assets on your local system, commit them to the repo and deploy to the server. That way you wouldn't have to compile assets on your server. However you might want to look into ways to delete the previously generated assets somehow and also automate the process.
, but issue was resolvedI tried installing node.js first. And then, ran the following command bundle exec rake assets:precompile. Only then I didn't notice the error.
Initially, I thought it was because of low memory too. Cleaned almost all running applications, but couldn't find a solution. Plus, I opened Ruby as administrator. Not sure if that helped too, but issue was resolved.
This issue can also be resolved by using a node.js JS runtime to precompile assets as it apparently has a lower memory footprint. For Ubunutu 14.04 I needed to run apt-get install nodejs, then replace the default js runtime in the Gemfile with gem 'node', run bundleand finally rerun the precompile. I would caution against precompiling in another location as you may forget to do this after a css or js change, leading to errors.

Rails 3.2 Upgrade - Vendor/Plugins Issue

Good afternoon,
I just upgraded my Rails app from 3.1.3 to 3.2.1. Everything is working on my local development machine (in development or production modes). There is no trace left of my vendor/plugins directory (or even the vendor directory at all).
However, after committing to git and pushing to Heroku, I'm getting warnings about deprecation of my rails 2.3 style vendor/plugins. Crazy seeing as I have no vendor directory at all!
Do I need to totally wipe my Heroku files? (If so, how would I do this?) Any other suggestions appreciated.
I've seen this and it looks like warnings about some of the stuff that Heroku injects into your code for things such as asset serving etc.
I'm assuming that as more and more start to use Rails 3.2 that Heroku will fix this. I wouldn't worry about it - the deprecation won't kick in until Rails 4.0 and that's some way off.

Resources