Standalone RedCloth on Windows - ruby

Context
I've recently taken part of a software development project for which I'd like technical documents to be written using a textual markup (suitable to be tracked in the code repository, alongside the code). Because the project is already using Redmine, I'd like to use Textile thus avoiding other developers to learn Yet Another Markup Language. I know implementations vary somewhat, so in the spirit of POLS, I would like to use RedCloth, which is used internally by Redmine.
We are developping on and deploying to multiple OSes, including Windows. For lots of convenience, as well as non-technical, non-developer users using Windows only I'd like to be able to compile said technical documents using a standalone tool, preferably deployed as a single installer.
I'm 100% new to Ruby, so please be patient. I don't plan on developing in Ruby for this project, I just want a working install on Windows, I'll take care of the rest from there.
Help wanted
I'm not developing a Rails application and this is for desktop installation, so don't tell me to "just use it on Linux". I have installed the DevKit which installs make, g++ etc. and is accepted by ./configure scripts as a "sane development environment".
I have a simple problem and I'm looking for a simple solution. Googling this problem has shown this problem to has been reported before and I've only found recommendations to switch to Linux, and people that tell me it "just works as advertised".
I'd like some actual help, please, even if it's only in the form of a checklist of possible failure points that I can check.
Environment
This problem occurs on Windows 7, 64-bit machines with no prior history of Ruby installation. I don't have access to a 32-bit at the moment.
Linux installs are not a problem.
Problem
I've just downloaded the Ruby Installer for Windows Ruby 1.9.2-p136 , and the Ruby Development Kit DevKit-tdm-32-4.5.1-20101214-1400-sfx.exe, which is required for compiling RedCloth. Both are the current recommended versions for deploying Ruby on Windows at the moment (or so I've read).
I'm following instructions, and so far so good. Both Ruby and the DevKit are installed in the default paths (no spaces in folder names). config.yml correctly points to the new install and nothing else. ruby dk.rb install runs fine. I can now see, in the Ruby installation folder, a file called lib/ruby/site_ruby/devkit.rb that is, I presume, the compilation pre-hook that sets the path to the DevKit when compiling Ruby gems. The code points to the correct folders, as expected.
When I test the installation with the recommended gem install rdiscount --platform=ruby command, I get this:
C:\DevKit>gem install rdiscount --platform=ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing rdiscount:
ERROR: Failed to build gem native extension.
"C:/Ruby192/bin/ruby.exe" extconf.rb
This is a little confusing, so I started looking around and I can find the file lib/ruby/gems/1.9.1/gems/rdiscount-1.6.5/ext/extconf.rb file. Running it through ruby extconf.rb in that folder gives me:
Could not create Makefile due to some reason, probably lack of necessary libraries
and/or headers. Check the mkmf.log file for more details. You may need
configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=c:/Ruby192/bin/ruby
--with-rdiscount-dir
--without-rdiscount-dir
--with-rdiscount-include
--without-rdiscount-include=${rdiscount-dir}/include
--with-rdiscount-lib
--without-rdiscount-lib=${rdiscount-dir}/lib
c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:678:in `flush': Broken pipe (Errno::EPIPE)
from c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:678:in `message'
from c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:690:in `checking_for'
from c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:796:in `have_func'
from extconf.rb:5:in `<main>'
I have read somewhere (can't find a link to it right now) that rdiscount doesn't compile on Windows, so I've proceeded with fetching the source code for RedCloth from the source repository (git clone git://github.com/jgarber/redcloth.git), as instructed.
When I try rake install from the given directory, I get errors for missing gems (diff-lcs and others), so I install them using gem install diff-lcs --version '=...' and then I can start the real installation.
When I get there, rake fails the following message:
(in c:/Users/carona/Desktop/redcloth)
rake aborted!
No such file or directory - gem build c:/Users/carona/Desktop/redcloth/redcloth.gemspec 2>&1
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:138:in ``'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:138:in `block in sh_with_code'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:137:in `chdir'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:137:in `sh_with_code'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:129:in `sh'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:42:in `build_gem'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:53:in `install_gem'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:31:in `block in install'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:634:in `call'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:634:in `block in execute'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:629:in `each'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:629:in `execute'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:595:in `block in invoke_with_call_chain'
c:/Ruby192/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:588:in `invoke_with_call_chain'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:581:in `invoke'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2041:in `invoke_task'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in `block (2 levels) in top_level'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in `each'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in `block in top_level'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2013:in `top_level'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:1992:in `run'
c:/Ruby192/bin/rake:31:in `<main>'
However, the file c:/Users/carona/Desktop/redcloth/redcloth.gemspec actually does exist, so I have no idea how to go about this.

I've tracked the problem down to two things, the 2nd of which is my "mistake".
The MinGW tools distributed with the DevKit 4.5.1 don't work on Windows 7 64-bit. They seem to have an old version of MinGW which exhibited this problem. Installing up-to-date MinGW tools and using those allowed to compile.
I initially used Git Bash to run gem install RedCloth and this caused some paths to be translated to /C/... instead of C:/ inside the Makefile. Obviously, g++ and friends could not open any of the given files. Re-installing by running ruby and gem from cmd.exe has fixed all the problems.
I now have a happy install. I've also reported the 1st issue to the RubyInstaller team.

Related

TypeError in installing ruby gems on CygWin

I have installed ruby 2.2.5 / gem 2.3.0 in CygWin but I am getting installation errors in using gem install.
As suggested in some places, I also tried gem update --system but even that did not help.
How to correct this issue?
I have attached the output of the commands I ran:
$ gem install napa --backtrace
ERROR: While executing gem ... (TypeError)
no implicit conversion of nil into String
/usr/local/share/ruby/site_ruby/rubygems/installer.rb:168:in `check_executable_overwrite'
/usr/local/share/ruby/site_ruby/rubygems/installer.rb:409:in `block in generate_bin'
/usr/local/share/ruby/site_ruby/rubygems/installer.rb:396:in `each'
/usr/local/share/ruby/site_ruby/rubygems/installer.rb:396:in `generate_bin'
/usr/local/share/ruby/site_ruby/rubygems/installer.rb:236:in `install'
/usr/local/share/ruby/site_ruby/rubygems/request_set.rb:156:in `block in install'
/usr/local/share/ruby/site_ruby/rubygems/request_set.rb:140:in `each'
/usr/local/share/ruby/site_ruby/rubygems/request_set.rb:140:in `install'
/usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:249:in `install_gem'
/usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:291:in `block in install_gems'
/usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:287:in `each'
/usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:287:in `install_gems'
/usr/local/share/ruby/site_ruby/rubygems/commands/install_command.rb:202:in `execute'
/usr/local/share/ruby/site_ruby/rubygems/command.rb:307:in `invoke_with_build_args'
/usr/local/share/ruby/site_ruby/rubygems/command_manager.rb:167:in `process_args'
/usr/local/share/ruby/site_ruby/rubygems/command_manager.rb:137:in `run'
/usr/local/share/ruby/site_ruby/rubygems/gem_runner.rb:54:in `run'
/usr/bin/gem:21:in `<main>'
$ gem update --system
Updating rubygems-update
ERROR: While executing gem ... (TypeError)
no implicit conversion of nil into String
Skip to the bottom for the short answer and not join me on my journey.
So I've been working on this today because for the life of me, what worked last year to get it working did not work this year. All the steps are attempted while using admin permissions. I had done some questionable commands from other threads that required me to downgrade gem to something 6 years ago, don't do that I could not figure out how to revert so I deleted my Cygwin install and started fresh and clean for this. Windows 10 is my operating system.
I used cygwin's installer to install the current version of ruby, gem and sass. (I'm positive as time goes on these will numbers will become out of date).
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-cygwin]
ruby-devel 2.3.3-1
gem 2.6.11
Sass 3.4.21 selective steve
Side note I tend to use 'Category' under the View drop down and select the devel category. I also let cygwin select dependencies for me automatically.
At this point I am having the same error. Looking at the log provided by the output I decided to try out some of the commands smashed in there like 'gcc' which was absent. Loading up the cygwin installer again, installed gcc version 5.4.0 (Package called gcc-core: GNU Compiler Collection (C, OpenMP))
Attempting to run 'gem install compass' again, another error, it cant find 'make'. Warm up the installer again and locate 'make: The GNU Version of the 'make' utility (4.2.1-2)
Running the compass install command again and checking the log: 'libffi' doesnt look like its there. In our cygwin installer says under the libs category I have libffi6 v2.2.1-2 already. I'm going to give libffi-devel a shot because I'm desperate to get compass installed.
This worked! Navigate to your directory and run the command 'compass watch' I'm pretty excited. Running 'compass -v' in the command line shows us the version 1.0.3
Short answer:
Useing the Cygwin installer to install the following Packages
ruby: interpreted object oriented scripting language
ruby-devel: interpreted object oriented scripting language
ruby-gems: Ruby Module management system
ruby-sass: Ruby css compiler extension
make: The GNU version of the make utility
gcc-core: GNU Compiler Collection(c, OpenMP)
libffi-devel: Portable foreign function interface libary
Then run cygwin as a administrator and input the command 'gem install compass'.

Cannot install vagrant plugins without sudo on OS X

I've installed plugins previously within vagrant. Now on a different MacBook, I'm trying to install some of the same plugins I was using on my older MacBook.
For example when I try to install vagrant-hostmanager I get a ruby permissions error:
$ vagrant plugin install vagrant-hostmanager
Installing the 'vagrant-hostmanager' plugin. This can take a few minutes...
Bundler, the underlying system Vagrant uses to install plugins,
reported an error. The error is shown below. These errors are usually
caused by misconfigured plugin installations or transient network
issues. The error from Bundler is:
An error occurred while installing ffi (1.9.8), and Bundler cannot continue.
Make sure that `gem install ffi -v '1.9.8'` succeeds before bundling.
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/opt/vagrant/embedded/bin/ruby extconf.rb
checking for ffi.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/opt/vagrant/embedded/bin/ruby
--with-ffi_c-dir
--without-ffi_c-dir
--with-ffi_c-include
--without-ffi_c-include=${ffi_c-dir}/include
--with-ffi_c-lib
--without-ffi_c-lib=${ffi_c-dir}/
--with-libffi-config
--without-libffi-config
--with-pkg-config
--without-pkg-config
/opt/vagrant/embedded/lib/ruby/2.0.0/tmpdir.rb:92:in `mktmpdir': parent directory is world writable but not sticky (ArgumentError)
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:510:in `try_link0'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:534:in `try_link'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:427:in `have_devel?'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:433:in `try_do'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:549:in `block in try_compile'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:502:in `with_werror'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:549:in `try_compile'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:1044:in `block in have_header'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:895:in `block in checking_for'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:340:in `block (2 levels) in postpone'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:310:in `open'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:340:in `block in postpone'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:310:in `open'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:336:in `postpone'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:894:in `checking_for'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:1043:in `have_header'
from extconf.rb:16:in `<main>'
Gem files will remain installed in /Volumes/Passport/vagrant.d/gems/gems/ffi-1.9.8 for inspection.
Results logged to /Volumes/Passport/vagrant.d/gems/gems/ffi-1.9.8/ext/ffi_c/gem_make.out
One thing that is different is that as I'm tight on space on my local SSD, I've defined the following in my .bashrc:
export VAGRANT_HOME=/Volumes/Passport/vagrant.d
So my box files are stored on a 2TB USB3 drive instead of chewing up valuable SSD space.
Now I could execute the plugin install using sudo, but that becomes a cascading issue, in that vagrant up now cannot see the plugin within the Vagrantfile without doing sudo vagrant up. And then the VM is owned by root... you can see how this cascades out of control.
Anyone know what is wrong? How I might solve?
edit: I discovered that if I change my VAGRANT_HOME back to the default value of ~/.vagrant.d, I can install the plugin - however my boxes are now on a volume not accessible by the default setting. Apparently this is a Ruby limitation.
TIA!
Okay I found the problem to this, but unclear where the responsibility for fixing this lies - I'm thinking this is a Ruby bug on OS X (for at least the version embedded within Vagrant).
Turns out Dir.mktmpdir expects the $TMPDIR variable to have the sticky bit set. On OS X the $TMPDIR variable points to unique per user directory like:
/var/folders/yl/y9zbwwm951v3x6p62yn24ckw0000gn/T
Changing the sticky bit using
chmod +t $TMPDIR
or really the more appropriate
chmod 700 $TMPDIR
Fixes this problem.
Note: I'm not sure why or how my $TMPDIR got 777 permissions, I've checked other OS X 10.10 installs and found that $TMPDIR correctly has 700 permissions.
I suspect the permissions on /Volumes/Passport might be strange. You may want to try:
> sudo chown -R `whoami` /Volumes/Passport
> sudo chmod 755 /Volumes/Passport
And then retry your install.

Cannot install the mechanize gem

I only had ruby 2.0 on my system. I tried to install mechanize gem. It gave me an error which told me to install ruby devkit. I installed devkit as follows - Download the installer/extractor > extract devkit to c:\devkit > cd into c:\devkit > add the path c:\Ruby200-x64 into the config.yml file > ruby dk.rb init > ruby dk.rb install. Then I got the error below. How can this be fixed ?
config.yml file -
# Example:
#
# ---
# - C:/ruby19trunk
# - C:/ruby192dev
#
---
- C:\Ruby200-x64
Error -
C:\Ruby2Devkit>gem install mechanize
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing mechanize:
ERROR: Failed to build gem native extension.
C:/Ruby200-x64/bin/ruby.exe extconf.rb
checking for main() in -lstdc++... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby200-x64/bin/ruby
--with-stdc++lib
--without-stdc++lib
C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:434:in `try_do': The compiler failed
to generate an executable file. (RuntimeError)
You have to install development tools first.
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:519:in `try_link0'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:534:in `try_link'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:720:in `try_func'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:950:in `block in
have_library'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:895:in `block in
checking_for'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:340:in `block (2 levels)
in postpone'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:310:in `open'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:340:in `block in postpone'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:310:in `open'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:336:in `postpone'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:894:in `checking_for'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:945:in `have_library'
from extconf.rb:2:in `<main>'
Gem files will remain installed in C:/Ruby200-x64/lib/ruby/gems/
2.0.0/gems/unf_ext-0.0.6 for inspection.
Results logged to C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/unf_ext-0.0.6/
ext/unf_ext/gem_make.out
If possible, please upvote this guy, whose answer helped me - https://stackoverflow.com/a/16579164/3184475
I spent hours trying to figure out a way to get this right using my existing ruby installation. I installed devkit and mingw (base and dev tools). Nothing helped ! I could not install any of the gems that mattered.
Solution - Delete your devkit. Uninstall your ruby. Install RailsInstaller from - http://railsinstaller.org/en
You will get some extra software with this installer. But, who cares ? It will save you 5 hours of frustration, googling, running commands and following steps about which you have no clue. If you are not allowed to do that, then prepare for hell.
After you install this software, go to cmd and run ruby -v to check which ruby you have.
When you try to install a gem, you might get some ssl security certificate errors like - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
The solution is here - https://gist.github.com/luislavena/f064211759ee0f806c88
I have the main steps from the above link which worked for me. I suggest you read the whole article though.
Step 1: Obtain the new trust certificate
If you've read the previous sections, you will know what this means (and shame on you if you have not).
We need to download AddTrustExternalCARoot-2048.pem.
Use the above link and place/save this file somewhere you can later find easily (eg. your Desktop).
IMPORTANT: File must have .pem as extension. Browsers like Chrome will try to save it as plain text file. Ensure you change the filename to have .pem in it after you have downloaded it.
Step 2: Locate RubyGems certificate directory in your installation
In order for us copy this file, we need to know where to put it.
Depending on where you installed Ruby, the directory will be different.
Take for example the default installation of Ruby 2.1.5, placed in C:\Ruby21
Open a Command Prompt and type in:
C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb
Now, let's locate that directory. From within the same window, enter the path part up to the file extension, but using backslashes instead:
C:\>start C:\Ruby21\lib\ruby\2.1.0\rubygems
This will open a Explorer window inside the directory we indicated.
Step 3: Copy new trust certificate
Now, locate ssl_certs directory and copy the .pem file we obtained from previous step inside.
It will be listed with other files like GeoTrustGlobalCA.pem.
Step 4: Profit
There is actually no step 4. You should be able to install Ruby gems without issues now.
In case you can't get that file AddTrustExternalCARoot-2048.pem, you can use the text below and save it as a .pem file.
-----BEGIN CERTIFICATE-----
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
-----END CERTIFICATE-----
Side note for OSX users. You may just need to accept XCode License sudo xcodebuild -license
In any case, take a look at mkmf.log for more details

Xcode can not be installed on OSX 10.9.2

Using OS X 10.9.2 Mavericks
I have troubles installing the github-pages gem. I need to install Xcode first, but that results in an error.
I tried to install Xcode using the command: xcode-select --install. The dialog box displays three options: Download Xcode, Not now, Install
When I select 'Install' and after select accept, the process begins and stops after a while. Displaying that the software is not available on the update server.
When I select 'Download Xcode', the App store launches and I can install Xcode.
Still it seems Xcode is not installed, see the following steps.
After I installed Xcode I start Terminal and follow the instructions on Using Jekyll with pages.
When I run sudo bundle install --verbose in my root folder the compiler generates an error:/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:430:in 'try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
Below the output of the `sudo bundle install` command:
Fetching from: https://rubygems.org/api/v1/dependencies
HTTP Redirection
Fetching from: https://bundler.rubygems.org/api/v1/dependencies
HTTP Success
Fetching gem metadata from https://rubygems.org/
Query List: ["RedCloth", "blankslate", "fast-stemmer", "classifier", "colorator", "highline", "commander", "ffi", "liquid", "rb-fsevent", "rb-inotify", "rb-kqueue", "listen", "maruku", "posix-spawn", "yajl-ruby", "pygments.rb", "redcarpet", "safe_yaml", "parslet", "toml", "jekyll", "kramdown", "rdiscount", "github-pages"]
Query Gemcutter Dependency Endpoint API: RedCloth,blankslate,fast-stemmer,classifier,colorator,highline,commander,ffi,liquid,rb-fsevent,rb-inotify,rb-kqueue,listen,maruku,posix-spawn,yajl-ruby,pygments.rb,redcarpet,safe_yaml,parslet,toml,jekyll,kramdown,rdiscount,github-pages
Fetching from: https://rubygems.org/api/v1/dep...ramdown,rdiscount,github-pages
HTTP Redirection
Fetching from: https://bundler.rubygems.org/ap...ramdown,rdiscount,github-pages
HTTP Success
Query List: ["stemmer", "rake", "bones", "jekyll-redirect-from", "jekyll-mentions", "jemoji", "termios", "jekyll-coffeescript", "sass", "mercenary", "directory_watcher", "open4", "hoe", "albino", "celluloid-io", "celluloid", "rb-fchange", "syntax", "rubypython", "echoe", "psych"]
Query Gemcutter Dependency Endpoint API: stemmer,rake,bones,jekyll-redirect-from,jekyll-mentions,jemoji,termios,jekyll-coffeescript,sass,mercenary,directory_watcher,open4,hoe,albino,celluloid-io,celluloid,rb-fchange,syntax,rubypython,echoe,psych
Fetching from: https://rubygems.org/api/v1/dep...,syntax,rubypython,echoe,psych
HTTP Redirection
Fetching from: https://bundler.rubygems.org/ap...,syntax,rubypython,echoe,psych
HTTP Success
Query List: ["loquacious", "little-plugger", "rdoc", "rspec", "bones-git", "bones-extras", "timers", "facter", "nio4r", "allison", "rubyforge", "gemcutter", "rcov", "RubyInline", "coffee-script", "html-pipeline", "gemoji", "win32-api"]
Query Gemcutter Dependency Endpoint API: loquacious,little-plugger,rdoc,rspec,bones-git,bones-extras,timers,facter,nio4r,allison,rubyforge,gemcutter,rcov,RubyInline,coffee-script,html-pipeline,gemoji,win32-api
Fetching from: https://rubygems.org/api/v1/dep...html-pipeline,gemoji,win32-api
HTTP Redirection
Fetching from: https://bundler.rubygems.org/ap...html-pipeline,gemoji,win32-api
HTTP Success
Query List: ["bones-rcov", "bones-rubyforge", "bones-rspec", "bones-zentest", "git", "coffee-script-source", "execjs", "win32console", "windows-pr", "windows-api", "win32-dir", "sys-admin", "CFPropertyList", "json", "json_pure", "net-scp", "activesupport", "nokogiri", "escape_utils", "rinku", "sanitize", "github-markdown", "github-linguist", "minitest", "rspec-mocks", "rspec-expectations", "rspec-core", "cucumber", "diff-lcs", "spicycode-rcov", "ZenTest", "hitimes", "test-unit"]
Query Gemcutter Dependency Endpoint API: bones-rcov,bones-rubyforge,bones-rspec,bones-zentest,git,coffee-script-source,execjs,win32console,windows-pr,windows-api,win32-dir,sys-admin,CFPropertyList,json,json_pure,net-scp,activesupport,nokogiri,escape_utils,rinku,sanitize,github-markdown,github-linguist,minitest,rspec-mocks,rspec-expectations,rspec-core,cucumber,diff-lcs,spicycode-rcov,ZenTest,hitimes,test-unit
Fetching from: https://rubygems.org/api/v1/dep...rcov,ZenTest,hitimes,test-unit
HTTP Redirection
Fetching from: https://bundler.rubygems.org/ap...rcov,ZenTest,hitimes,test-unit
HTTP Success
Query List: ["thread_safe", "tzinfo", "multi_json", "i18n", "builder", "memcache-client", "libxml-ruby", "multi_test", "gherkin", "term-ansicolor", "treetop", "polyglot", "mime-types", "charlock_holmes", "configuration", "mkrf", "rake-compiler", "spruz", "net-ssh", "mini_portile", "racc", "tenderlove-frex", "rexical", "weakling", "rspec-support", "hpricot", "htmlentities", "win32-security"]
Query Gemcutter Dependency Endpoint API: thread_safe,tzinfo,multi_json,i18n,builder,memcache-client,libxml-ruby,multi_test,gherkin,term-ansicolor,treetop,polyglot,mime-types,charlock_holmes,configuration,mkrf,rake-compiler,spruz,net-ssh,mini_portile,racc,tenderlove-frex,rexical,weakling,rspec-support,hpricot,htmlentities,win32-security
Fetching from: https://rubygems.org/api/v1/dep...ot,htmlentities,win32-security
HTTP Redirection
Fetching from: https://bundler.rubygems.org/ap...ot,htmlentities,win32-security
HTTP Success
Query List: ["trollop", "archive-tar-minitar", "needle", "jruby-pageant", "tins", "atomic", "facets"]
Query Gemcutter Dependency Endpoint API: trollop,archive-tar-minitar,needle,jruby-pageant,tins,atomic,facets
Fetching from: https://rubygems.org/api/v1/dep...uby-pageant,tins,atomic,facets
HTTP Redirection
Fetching from: https://bundler.rubygems.org/ap...uby-pageant,tins,atomic,facets
HTTP Success
Query List: []
Fetching additional metadata from https://rubygems.org/
Query List: ["tenderlove-frex", "spicycode-rcov"]
Query Gemcutter Dependency Endpoint API: tenderlove-frex,spicycode-rcov
Fetching from: https://rubygems.org/api/v1/dep...tenderlove-frex,spicycode-rcov
HTTP Redirection
Fetching from: https://bundler.rubygems.org/ap...tenderlove-frex,spicycode-rcov
HTTP Success
Query List: []
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-cflags=-w
checking for main() in -lc... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
--with-redcloth_scan-dir
--without-redcloth_scan-dir
--with-redcloth_scan-include
--without-redcloth_scan-include=${redcloth_scan-dir}/include
--with-redcloth_scan-lib
--without-redcloth_scan-lib=${redcloth_scan-dir}/
--with-clib
--without-clib
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:430:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:509:in `block in try_link0'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tmpdir.rb:88:in `mktmpdir'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:506:in `try_link0'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:530:in `try_link'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:716:in `try_func'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:946:in `block in have_library'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:891:in `block in checking_for'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:336:in `block (2 levels) in postpone'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:306:in `open'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:336:in `block in postpone'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:306:in `open'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:332:in `postpone'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:890:in `checking_for'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:941:in `have_library'
from extconf.rb:5:in `<main>'
Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/RedCloth-4.2.9 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/RedCloth-4.2.9/ext/redcloth_scan/gem_make.out
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/ext/builder.rb:60:in `run'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/ext/ext_conf_builder.rb:37:in `block in build'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tempfile.rb:324:in `open'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/ext/ext_conf_builder.rb:18:in `build'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/installer.rb:678:in `block (2 levels) in build_extensions'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/installer.rb:677:in `chdir'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/installer.rb:677:in `block in build_extensions'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/installer.rb:652:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/installer.rb:652:in `build_extensions'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/installer.rb:218:in `install'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/source/rubygems.rb:100:in `block in install'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/rubygems_integration.rb:118:in `preserve_paths'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/source/rubygems.rb:93:in `install'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/installer.rb:111:in `block in install_gem_from_spec'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/rubygems_integration.rb:150:in `with_build_args'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/installer.rb:110:in `install_gem_from_spec'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/installer.rb:265:in `block in install_sequentially'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/forwardable.rb:171:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/forwardable.rb:171:in `each'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/installer.rb:264:in `install_sequentially'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/installer.rb:97:in `run'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/installer.rb:15:in `install'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/cli.rb:255:in `install'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/vendor/thor/command.rb:27:in `run'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/vendor/thor/invocation.rb:121:in `invoke_command'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/vendor/thor.rb:363:in `dispatch'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/vendor/thor/base.rb:440:in `start'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/cli.rb:10:in `start'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/bin/bundle:20:in `block in <top (required)>'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/friendly_errors.rb:5:in `with_friendly_errors'
/Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/bin/bundle:20:in `<top (required)>'
/usr/bin/bundle:23:in `load'
/usr/bin/bundle:23:in `<main>'
An error occurred while installing RedCloth (4.2.9), and Bundler cannot continue.
Make sure that `gem install RedCloth -v '4.2.9'` succeeds before bundling.
The issues you are facing are specific to OSX Mavericks and the latest version(s) of XCode (as of today, May/21/2014). I'm also on 10.9.2, and I faced the following issues, which are what you're facing too, I believe.
Here are the issues I faced while trying to install/build Ruby gems that involve compiling native code and/or some dependencies that do:
You get something like Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. somewhere in your output.
Reason: the ubiquitus Command Line Tools are not installed on your system.
Solution: There are 3 ways to install the Command Line Tools: 1) installing the full XCode suite, starting it, and letting it install the Command Line Tools for you, 2) running xcode-select --install, which will pop up a dialog asking you if you want to install the full XCode, install only the Command Line Tools, or Cancel. This second approach is what I did and it worked for me once, but I've seen it fail on other machines, since apparently the location where it looks for the package online is sometimes accessible, sometimes not, so try this if you want, but it may not work, and, finally 3) downloading it from the web at the Apple Developer Tools page (login with Apple account required)
You get something like clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future] somewhere in your output.
Reason: Recent versions of XCode removed support for unused command line arguments, as the XCode 5.1 release notes mention:
Compiler
As of Apple LLVM compiler version 5.1 (clang-502) and later, the optimization level -O4 no longer implies link time optimization (LTO). In order to build with LTO explicitly use the -flto option in addition to the optimization level flag. (15633276)
The Apple LLVM compiler in Xcode 5.1 treats unrecognized command-line options as errors. This issue has been seen when building both Python native extensions and Ruby Gems, where some invalid compiler options are currently specified.
Projects using invalid compiler options will need to be changed to remove those options. To help ease that transition, the compiler will temporarily accept an option to downgrade the error to a warning:
-Wno-error=unused-command-line-argument-hard-error-in-future
Note: This option will not be supported in the future.
To workaround this issue, set the ARCHFLAGS environment variable to downgrade the error to a warning. For example, you can install a Python native extension with:
$ ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future easy_install ExtensionName
Similarly, you can install a Ruby Gem with:
$ ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName (16214764)
Solution: the solution is mentioned on the snippet from the XCode release notes above, and basically implies setting environment variable ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future before running the gem install, like this:
export ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future
gem install <your-desired-gem>
... or, if you need to execute it as sudo, put the above 2 lines in a script and execute it as sudo, or run it as sudo inline like this:
sudo bash -c "export ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future; gem install <your-desired-gem>;";
Note: the solution above (setting the ARCHFLAGS environment variable) is going to stop working at some point in the future, as indicated in the aforementioned release notes. Hopefully, by that time current Ruby gems will have removed unused command line options from their Makefiles.
NB: I used the approach outlined above to successfully install the github-pages Ruby gem in OSX 10.9.2
Once you install from the App Store, find Xcode in your Applications directory and launch it (not from the terminal). It will likely tell you it needs to download a few more things. Let it. You can then go ahead and follow instructions for other software that requires Xcode. If it still doesn't work, it is likely a problem with the installation instructions of the other software. I would contact the maintainer of that software to ask about specifics. Good luck!

Not able to install watir gem

I installed ruby186-27_rc2 and i am getting the same error as described in the Ruby: Cannot Install Watir Gem On Windows thread when i try to install watir using gem install watir. Please see the error below.
C:\DevKit>gem install watir
Building native extensions. This could take a while...
ERROR: Error installing watir:
ERROR: Failed to build gem native extension.
C:/Ruby/bin/ruby.exe extconf.rb
checking for strncpy_s()... no
creating Makefile.....
And then tried to install the devkit as suggested in the thread mentioned above. During the devkit installation i came up with a problem.
In step4 of devkit installation as described at Development Kit wiki i have added the path C:\Ruby to the config file and then ran the command ruby dk.rb install and i got the following error. Please help! Waiting for your inputs. Thanks!
C:/Ruby/lib/ruby/1.8/yaml.rb:133:in `load': syntax error on line 15, col -1: `'
(ArgumentError)
from C:/Ruby/lib/ruby/1.8/yaml.rb:133:in `load'
from dk.rb:151:in `review'
from dk.rb:143:in `open'
from dk.rb:143:in `review'
from dk.rb:248:in `send'
from dk.rb:248:in `run'
from dk.rb:262
The DevKit contains a development environment for the MinGW port of MRI and YARV. You are using the MSVC6 port of MRI, so you need to install a development environment for MSVC6.
Unfortunately, there is no ready-made DevKit-like package for that. You will have to install it on your own. Note that it's not actually that hard to install, the biggest problem is to get a hold of a copy of Microsoft Visual C 6.0, since that hasn't been on sale for about 10 years now. You'll basically have to find someone who is going to sell you a used copy.
May I ask why you need to use a port of Ruby that hasn't been maintained in over 2 years, contains a version of Ruby that is so old that it cannot even run most modern code (e.g. Rails requires at least 1.8.7 or 1.9.2) and has several bugs, including security holes? Why don't you just use the MinGW port which is actually maintained?
This is all independent of the actual problem, of course, which is that you have a syntax error in your config.yml: you missed a dash and a space on line 15, which should read
- C:/Ruby
as indicated in the example section directly above it.

Resources