Remove therubyracer or fix timeout when pushing to Heroku - ruby-on-rails-4

We've been wanting to upgrade our app to Ruby 2.1.5. We use Heroku as our deployment service and Rails 4.0.13. When we push into Heroku, we're getting the following error:
Could not find libv8-3.3.10 in any of the sources
!
! Failed to install gems via Bundler.
!
! Push rejected, failed to compile Ruby app
This is because we're using the therubyracer gem, in its 0.10.2 version. That version depends on libv8 version 3.3.10, which apparently isn't available for Ruby 2.1 (because when using Ruby 2.0, we don't get this issue). We could upgrade to the latest therubyracer version, 0.12.1, but this gives us:
Timed out compiling Ruby app (15 minutes)
almost all the time whenever we push. Also, this gem is not recommended for Heroku (therubyracer in Heroku). Which of course lead us to wanting to remove it.
However, we're also using less-rails for our project. This gem depends on therubyracer https://github.com/metaskills/less-rails#installing). This makes it difficult for us to remove therubyracer. One way to solve this is to stop using less and begin using sass, but we want to avoid that as much as possible.
Is there any way to remove therubyracer and still use less-rails? If not possible, can we avoid the timeouts when pushing?

Related

rails-rspec error cannot load such file -- rspec/core/formatters/progress_formatter

I've broken my rails-rspec. I switched to a different gemset to run a 3rd party test. When I returned to my 2.3.0(default) gemset, I had the following errors.
running rspec gets:
/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:274:in `require': cannot load such file -- rspec/core/formatters/progress_formatter (LoadError)
running rails generate rspec:install returns:
Could not find generator 'rspec:install'. Maybe you meant 'devise:install' or ...
I have tried uninstalling and reinstalling, but errors persist.
Running rspec -v returns:
- rspec-core 3.6.0
- rspec-expectations 3.6.0
- rspec-mocks 3.6.0
- rspec-rails 3.6.1
- rspec-support 3.6.0
It seems that ruby cannot find rspec-core. I have tried the workaround from this post without success. Thank you in advance for any insight you might provide.
Running
rails 4.2.0, ruby 2.3.0
Running bundle exec rspec solved it for me.
Running bundle clean --force did the trick for me, turns out there's some outdated gem in my system
I learned this from Victor Hazbun - expert on CodeMentor and Egghead.io:
Run gem list | grep rspec and pay attention to any gems that list multiple versions.
Then run gem uninstall ______ for each of those versions (removing ALL of the versions of each).
Then run bundle afterward. This will sync your versions with the versions in your gemfile.
I was getting the error below in a rails app and none of the solutions here worked for me.
gems/rspec-core-3.8.0/lib/rspec/core/formatters.rb:210:in `require': cannot load such file -- rspec/core/formatters/progress_formatter (LoadError)
Emptying the gemset and re-installing did.
This assumes you are using rvm and a .ruby-gemset at the root of your app.
$ rvm gemset empty <name-of-gemset>
$ bundle install
I think you should try
bundle exec rspec:install
I was trying to make a contribution to CocoaPods and was getting the same error when I was doing rspec foo_spec.rb. Turns out they were NOT using rpsec at all. They seem to have had a special test runner:
CocoaPods uses bacon as a test runner. To run all tests, use bundle exec rake spec in the root of the project. If you want to run a specific test instead, use bundle exec bacon spec/[folder]/[name]_spec.rb
For more on that see here
If you run the specs from RubyMine, you can specific the RSpec version in Run Configuration.

What are Capistrano binstubs?

I'm new to Rails and wish to deploy my app to Ubuntu 14 using Capistrano. Can someone explain to me what are binstubs and whether they are required for deploying my rails app?
A binstub is an executable script that wraps a Ruby command to ensure that a specific version of that command is used.
The reason binstubs are sometimes necessary is because a given named Ruby command can refer to many different things, and so you can't be 100% sure of what the name refers to. In deployment, predictability is very important: you want to be 100% sure of what code you are running, especially in production.
For example, consider the command named rails. You might have multiple versions of Rails installed. Indeed, every time you upgrade to the latest patch release for security fixes, that is another new version you're installing. On top of that, you might have multiple versions of Ruby installed, too.
So when you run the command rails, which version of Ruby is used? Which version of Rails?
A binstub makes this decision explicit. The idea is that you create a special script and place it in the bin directory of your project, say bin/rails. This script uses Bundler to guarantee the right version of Rails is used. When you run bin/rails, you get that guarantee. (When you generate a new Rails project, Rails in fact creates this and other binstubs for you.)
Anyway, technically you do not need these binstubs so long as you use bundle exec rails. The bundle exec wrapper essentially does the same thing that a binstub would do.
If you use the capistrano/rails gem in combination with the capistrano/bundler gem (make sure both are in your Capfile), then Capistrano will always use bundle exec and you won't have to worry about creating your own binstubs.

Travis-CI "The command "bundle exec rake" exited with 1." + mystery 404 error

bundle exec rake runs all tests perfectly fine locally. However, Travis CI keeps blowing up with Problem accessing /authentication without giving much more info to go on. Here's one of the failed builds: https://travis-ci.org/Nase00/Horizon/builds/48094102 For the life of me, I cannot figure out what is causing an authentication error when Travis tries to run bundle exec rake.
Here's the project repo: https://github.com/Nase00/Horizon
I'm not sure what version of Neo4j Travis uses (UPDATE: they use 1.9.4, not supported) but I'm going to guess that it's a bit older than what Neo4j.rb supports. I'm one of the core maintainers and built the Neo4j 2.2 auth support that's fouling you up, but I tested it with different versions, going back to the early 2.1 subversions and had no trouble.
The best practice is to not use Travis's Neo4j at all. Instead, configure Travis to install the same version of the database you're using for dev and production. As a bonus, the rake task that installs Neo also disables auth in 2.2, so you don't have to deal with that at all. It's not that we're against auth, it's that we think of the rake install and config tasks as convenient features for dev/test environment, not production, so no auth seems like a reasonable default.
Take a peak at our .travis.yml file to see how we do the installation. https://github.com/neo4jrb/neo4j/blob/master/.travis.yml. An abstract that'll solve your issue:
script:
- "bundle exec rake neo4j:install['community-2.2.0-M02'] neo4j:start default --trace"
language: ruby
rvm:
- 2.0.0
Swap the community-2.2.0-M02 for whatever version you want to use. I'd have to check again but from what I remember, we are compatible with versions as far back as 2.1.2. I apologize for this not being posted in our docs -- it should be.
I very strongly recommend using Ruby 2.2.0 with Neo4j.rb. We generate a lot of symbols during Cypher queries that won't be garbage collected otherwise.
EDIT for a little more info
The very first thing the auth module does is check for the presence of the authentication REST endpoint. In all of the versions of Neo4j I tested, it didn't give an error like that, it just returned an empty body, which we interpret as a sign that auth is either unsupported or disabled.
Aftermath Edit
Travis support confirmed their provided Neo4j version is 1.9.4.

Get 'best-in-place' gem for rails4 from github w/o internet

I got a very limited internet connection on my office laptop and I want to install the 'best-in-place' gem. Since I use rails 4 I need to get the gem from github as far as I understood various threads. But I cant run bundle install with access outside of my local system.
Is it still possible to install that gem somehow? I already downloaded the folder form github and put it into my ruby but its not working that easy.
Best regards!
Edit: If thats not possible, does anyone of you uses an alternative gem with similar functions?
You can always clone it (or download it, as you have) and then access it later.
Let's say that you downloaded it to: /home/user3665315/workspace/best_in_place
Then, in your Gemfile you can access it locally with the :path option
# Gemfile
gem "best_in_place", path: "/home/user3665315/workspace/best_in_place"
then run
bundle install
and that's it, you have it working locally

Can't create an Ember.js application using bpm

I am trying to follow the directions on this ud3323/bpm wiki page to create an Ember.js application using bpm. The very first command on this page (bpm init hello_world) is throwing an exception - "No such file or directory - C:/apps/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/execjs-1.2.13/lib/execjs/support/which.bat" (see the issue logged here - my comment is the second one). I checked the files under execjs directory - there is no file called which.bat. Note that I installed bpm using "gem install bpm". I don't know how to build ud3323's fork (don't know Ruby - I installed it just to try out bpm). Can anybody help me get past this issue?
Thanks in advance for your time.
Naresh,
I got some free time and found the issue. The current build of BPM requires the use of the gem execjs version 1.2.4. You probably have the latest version which is 1.3.0 or the latest from the 1.2.x branch.
What you need to do is install the correct version by running the command gem install execjs --version 1.2.4. After that BPM should work fine. I have it running on Windows7 64bit with a clean installation of Ruby 1.9.2.
Also for anyone else, I have detailed instructions of exactly what I did on this page: https://github.com/ud3323/bpm/wiki/Installing-with-Windows