Heroku messing up CSS following Hartl's Rails tutorial - ruby-on-rails

I am having a problem with microposts rendering correctly on heroku, but not on localhost. I am following Hartl's Rails Tutorial guide.
Here is an imgur album showing the issue. The first image is the error(heroku), the second one is correct (localhost).
http://imgur.com/d8XxHzm,HnRoGne#0
I cannot for the life of me figure out why this would happen. It almost seems like Heroku is ignoring my CSS.
Here is the github repo:
https://github.com/Mciocca/sample_app

Sounds like one out of three possible reasons:
There's a conflicting stylesheet interfering. Check out app/assets/stylesheets whether there are classes defined twice.
Stack. I see you've placed pg in production in your gemfile, which is good. Heroku runs on Cedar stack - make sure it is. (Creating severe-mountain-793... done, **stack is cedar**)
Not assuming anything, but I've been there several times: make sure you've included recent changes to your repo before pushing to heroku. git add . and git commit -am "brainfart", then git push heroku master <branch>.
And congrats on choosing Rails!

Run bundle exec rake assets:precompile to compile the assets incl. the stylesheets into the public hierarchy that is being used by Heroku.
When done:
git add -A
git commit -m "Precompiled assets" and finally
git push and git push heroku
For better understanding check out the Rails Guides on asset pipelines and the Heroku Guides on assest pipelines.

Related

Rails on Heroku - Site does not load - ActionView::Template::Error (The asset "image.jpg" is not present in the asset pipeline.)

I've build a simple website, using Rails so I can deploy it to Heroku. It runs perfectly locally, everything works fine. It deploys fine to Heroku but when opening the webpage (http://a-clean.herokuapp.com/) I get the following error displayed:
We're sorry, but something went wrong.
If you are the application owner check the logs for more information.
When I check the logs (running heroku logs in terminal) it shows the error:
ActionView::Template::Error (The asset "a_clean_sample_1.jpg" is not present in the asset pipeline.)
So far this is just a one-page website with a couple of partials. Here is the github repository: https://github.com/webbc99/a-clean
The image it's failing on is loaded in app/views/welcome/home.html.erb line 57.
Rails version 5.1.6, Ruby version 2.5.0
I've double checked that the images are in fact in the app/assets/images folder, and the image_tags are using the file extensions.
I've tried running heroku run rake assets:precompile, and I've tried using the rails12factor gem and also without it. I have tried changing config.assets.compile = false to true in the config/environments/production.rb which did get the page to load but all of the images were ignoring styling and were huge.
What is really confusing me is that I have deployed several other rails apps, same rails version, same ruby version, and none of these have had this issue before.
Here is a working app:
https://github.com/webbc99/presumptuous
https://presumptuous.herokuapp.com/
Any help would be greatly appreciated, been googling this for hours with no luck.
It's the simplest way to fix this problem is; You need to run as follows;
rails assets:precompile RAILS_ENV=production
git add .
git commit -m {message}
git push heroku master (push the code to the heroku again)
I tried to do it from your code and work fine.

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.

Rails 3.1 on heroku ckeditor

I have a big problem with the ckeditor "3.7.0.rc2" gem.
In development it works great with s3 a backend for uploading.
But on heroku it does not work.
The problem is that the ckeditor/vendor/skins/(kama) or (office2003) or (v2) /editor.css files contains an error that makes the sass compiler scream. The error like this "filter:;", since there is no value it does not work.
There is no point in change the files locally, because heroku downloads the gem as I deploy.
I have tried to package the gem locally and make my own git fork and install it for there. But, then the
RAILS_ENV=production bundle exec rake assets:precompile
command precompiles all files in the ckeditor folders and always ends in
rake aborted! Permission denied
When I precompile with the "3.7.0.rc2" gem installed, some ckeditor js files are precompiled but not all.
How can I get around this problem?
When you fork ckeditor gem and use the forked git path in Gemfile heroku will pull the sources of ckeditor from your forked git repo instead of the gem. This should fix the issue.
Other thing that you could try is precompile the assets in your development machine and push the assets to heroku. This will make sure that heroku will not precompile those assets. More info is available at http://devcenter.heroku.com/articles/rails31_heroku_cedar. This will run only on cedar stack
The solution was to fork the git repo, delete all unnecesarry and correct the errors. js files. Then the precompiling worked and now the app is running on heroku.
Here's a link to my fork https://github.com/andreaslyngstad/ckeditor
It worked in my project, but I have deleted js files that I did not use, so if you are using some of them, this is not for you.

Trouble pushing basic Ruby on Rails app to Heroku

I was working through the first chapter of the Rails Tutorial. I pushed first_app to heroku. At first I was getting the sqlite3 error (I think). But, I edited the gemfile and pushed it up to heroku again. But, I don't get the same page as on: http://railstutorial.org/ruby-on-rails-tutorial-book#sec:1.4.3 (I think it's supposed to look like Figure 1.11 in section 1.4.3)
Instead, I get this: http://blooming-samurai-546.heroku.com/
It just says:
Heroku | Welcome to your new app!
Refer to the documentation if you need help deploying.
I did something wrong right? Any ideas what?
In your git console try:
git add .
git commit -am "Initial commit"
git push heroku
It looks like you pushed to heroku with nothing so it created an empty directory.
I had this same issue and was very frustrated by it. What solved the issue for me was moving
gem 'sqlite3'
into the block following
group :development, :test
in the Gemfile.
After that, no longer saw these kinds of messages:
remote: ! Failed to install gems via Bundler.
remote: ! Detected sqlite3 gem which is not supported on Heroku:
...
remote: ! Push rejected, failed to compile Ruby app.
in terminal after typing git push heroku or git push heroku master
Hope this helps.
Can’t argue with success.
However, before pushing the master with $ git push heroku master some folks may need to run the following command:
$ git remote add heroku git#heroku.com:your-heroku-url-goes-here.git
as discussed in the “Git Remotes and Heroku” section currently at:
http://devcenter.heroku.com/articles/git

push rails app to heroku

I am trying to push a rails application to heroku.
When I get to the last step:
git push heroku master
It doesn't work and gives me these errors:
Counting objects: 85, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (74/74), done.
Writing objects: 100% (85/85), 24.38 KiB, done.
Total 85 (delta 23), reused 0 (delta 0)
-----> Heroku receiving push
! Heroku push rejected, no Rails or Rack app detected.
error: hooks/pre-receive exited with error code 1
To git#heroku.com:smooth-dusk-26.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git#heroku.com:smooth-dusk-26.git'
I don't know what I'm doing wrong :(
Here's the answer I got from Heroku and it worked for me (after trying different pg gems, adapters, and everything else on the 10 other posts about this)
1) add the line:
gem 'pg'
to your Gemfile.
2) Run the command bundle install to install the gem into your bundle.
3) Stage the Gemfile and Gemfile.lock changes:
git add Gemfile Gemfile.lock
4) Commit the changes:
git commit -m "Install the pg gem"
5) Redeploy to heroku:
git push heroku master
When you created your Rails application, did you change directory into the directory of the application? You have to perform all the commands from within the application's directory.
rails myapp
cd myapp
I encountered the same errors working through Chapter 1 of Michael Hartl's Rails Tutorial. They were eventually resolved by issuing another git commit command after opening a Heroku account and configuring the SSH keys: git commit -a -m "Heroku recommit"
git push heroku master then succeeded.
I just had the same problem trying to push my app to heroku and none of the above answers fixed it.
I solved the issue by emptying my RVM Gemset with rvm gemset empty, deleting my Gemfile.lock (probably best to just rename it) and reinstalling my gems. Pushing worked fine after this.
For me it was the presence of index.php that fixed it. Heroku seems to check for existence of index.php on pre-commit.
Got the same problem under windows following one of the guides on ror site. After making everything like here http://devcenter.heroku.com/articles/quickstart it was solved.
Seems like problem was because of missing two lines.
cd myapp
git init
Also, if you're on Rails 3.0 make sure you use the cedar stack
heroku create --stack cedar
I went through the Rails Tutorial and didn't have a single problem with Heroku (MAC OS X), but you do have to follow the directions.
First, make sure you add/commit to Git. Then if you're in a -b (branch) you need to checkout into master, then merge the branch. If you've made changes to assets, you need to rake asset:precompile.
If you're having a rack up issue, make sure you have this file => config.ru and the contents should look like this.
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
run SampleApp::Application
I'm relatively new to Rails and Heroku, but as I mentioned above, if you're following the tutorial's directions, Heroku is a snap and the directions most definitely work. If not, I highly recommend getting started there!
enter link description here

Resources