Run a non-jRuby project after installing jRuby (or remove jRuby) - ruby-on-rails-3

I installed jRuby to try it in a new project, but I didn't think it would affect my entire Ruby installation.
Now when I try to start an old project, I get an error
/usr/bin/env jruby: no such file or directory
I've tried searching for how to remove jruby, but don't come up with anything. is there a nice way to get my rails apps working again with regular ruby?
I REALLY hope so.

Looks like it created symlinks; point them back at at the Ruby you want to use.
Use something like rvm to avoid this. (Or rbenv if you prefer.)

Rerun "bundle install" -- if you ran bundle install under jruby, the shebang for your scripts in the /bin folder was likely changed to reference jruby. By re-running bundle install under MRI, bundler will fix the shebangs for you.

Related

The Podfile does not contain any dependencies with xcode

everybody, did you happen to encounter such an error while running the pod install command?
Link to the error itself
Since I tried to reinstall ruby by this method already:
rvm install ruby-2.6.3
rvm use ruby-2.6.3
rvm --default use 2.6.3
And still, unsuccessfully.
and cocoapods are also unsuccessful anyway, there is simply no place to look for an answer.
This error flies away only when working with an Obj-c project (and quite ancient ones), because I am now looking at the cryptoPro library and the standard project is not launched there.
There are no such problems with new projects at the moment.
Fixed an error. I will tell you what it was about me. I noticed this line in the bug:
untimeError - [Xcodeproj] Consistency issue: build setting ARCHS has multiple values: {"Debug"=>"$(ARCHS_UNIVERSAL_IPHONE_OS)", "Release"=>"$(ARCHS_STANDARD_32_BIT)"}.
After that I got into the Targets -> Build Settings -> Architectures project itself.
Specify there $(ARCHS_STANDARD) for both cases and then everything worked!

System ruby/gem vs RVM ruby/gem

I installed RVM, read the documentation and do not understand it well. For example, I had an rails application that is created and run just find (before I install RVM) and it uses the system ruby and system gem. Now after I install RVM:
Do I need to re-install these gems into RVM so these gem can be under RVM control?
How to a port the application to use RVM gem instead of system gem?
Is RVM a wrapper for ruby and gem or a separate repository of these ruby and gem? So if I install a gem under RVM, the gem only exist in RVM or exist across RVM and system, or vice versa. Am I duplicating or does RVM and System synchronize their gem/system themselves?
I am still completely confused of the goods and uses of RVM. Now all my previous applications that used to work not doesn't even start with various errors.
My environment: Mac OS X 10.8; Rails 3.2.9; TextMate
Yes. Use bundler and there will be no pain.
It just need to be run in RVM environment. No special porting required.
It is intended to provide separate environment for each of your projects by substituting environment variables like $PATH, $GEM_HOME, $GEM_PATH.
Pros:
You can have different ruby interpreters installed to fulfil your applications' requirements. Imagine that you are starting a new project with Rails 1.9.3, but you are still working on old two which use 1.8.7 and 1.9.1 and have not been ported so far.
Your gems does not conflict with each other. For example Psych has special needs. If you use it, you got to use it in all your project. But with RVM you can create different gemsets for each project.
Moves gem directories too dirs where you got read+write access. This is good because does not force you to compile gems with root privileges.
Cons:
I had problems with RVM when using it for long time under Fish shell. Two times, after some weeks whole RVM went crazy and just get broken. Not going into details, I got to remove whole ~/.rvm directory. Never happened under Bash.
My typical workflow with RVM is following:
Add ruby "1.9.3" or equivalent to Gemfiles of my projects to avoid running it with wrong Ruby version.
Install RVM and install Rubies I need, rvm install 1.9.3.
In given project, rvm use 1.9.3.
Install required gems.
Use my app normally.
Please note I am not using Gemsets. This is because of Cons #1. I really love Fish shell, can't live without it, and bundler alone gives me decent management of Gems (one problem: Psych). To use Gemsets, two additional steps between 3. and 4.:
3a. Create one rvm gemset create gemset1.
3b. Use it rvm use gemset1#1.9.3.
I always use RVM when working with some legacy projects.
Refer to this screencast: http://railscasts.com/episodes/200-rails-3-beta-and-rvm for decent tutorial.

How can I make rbenv install certain gems automatically?

I always want bundler and gem-ctags to be installed in any Ruby I have installed. Is there a way to make rbenv / ruby-build install them automatically?
RVM has #global gemsets; is there an equivalent in rbenv?
Use rbenv Plugins
By default, rbenv doesn't use gemsets. People who love rbenv probably just hack their GEM_PATH and GEM_HOME when they want different gems, but there are also some plugins that automate some of this behavior. Two that I know of are:
rbenv-vars by Sam Stephenson (the author of rbenv)
rbenv-gemset by Jamis Buck
Use Bundler's --path Flag
Of course, you can also just use bundler with a --path flag to install bundled gems to a unique directory instead of using gemsets. The bundle-install(1) docs say:
--path=<path>
The location to install the gems in the bundle to. This defaults to the gem home,
which is the location that gem install installs gems to. This means that, by
default, gems installed without a --path setting will show up in gem list. This
setting is a remembered option.
Consider the "Batteries-Included" RVM Instead
The argument for rbenv is that is simpler and does less under the hood than RVM. I'd argue that if you need to add ruby-build, rbenv-gemset, and other plugins to get the functionality you need, then you may as well use RVM in the first place.
This isn't a critique of rbenv, or praise for RVM. I'm just pointing out that if you want a tool that gives you most of RVM's functionality, you might was well just use the tool that gives you want you want "out of the box" rather than bolt the functionality on post facto.
You can certainly do what you need to do with rbenv, one way or another. I'd just suggest that you not put yourself in a position where you have to fight your tools to get things done.
I wrote a little shell script that tells Gem to add particular gems to any Ruby currently set. That way it works whether I'm using rbenv, RVM or I'm on a machine where I installed Ruby from source by hand.

RVM & GDAL - Linking external libraries

I am using GDAL in my rails 3 project. I cannot seem to figure out how to get it to work properly without defaulting to the system ruby. Rails complains that it can't find "gdal/org" even though its installed. How can I make this link in RVM and still use my ruby gemset?
Sounds like you installed the libraries but how are you trying to have Ruby utilize them? Per my understanding, installing libgdal-ruby via apt would install everything in the system paths which wouldn't be automatically loaded by default by a Ruby installed via RVM nor your Rails application using Bundler, which isolates gems. Perhaps you can try setting something like
ENV['LD_LIBRARY_PATH'] = "#{ENV['LD_LIBRARY_PATH']}:/path/to/gdal/libs"
in your environment.rb to include the libraries for gdal. You might also need a custom initializer to require it on application boot.
Better yet I found this gem which works perfectly: github.com/zhm/gdal-ruby.

How to watch for changes to HAML files and save them

I want to run a HAML command every time I save a particular file. I know this can be done by compass but only for sass not HAML has anyone done this or guide me how to.
On MacOS (and I assume, on linux too) you can use the 'watch' command from the terminal.
First, you need to install it using, for example "homebrew"
brew install watch
and then you can run it like:
watch haml haml/mypage.html.haml html/mypage.html
Or if anyone stumbled in here like I did. There is a newer tool: LiveReload that does all these automatically and more.
Sure, check out StaticMatic, nanoc, or Webby (search for these on gitHub). You can make them work with Compass too.