Search code examples
ruby-on-railsrubygemsinstallationfreebsd

how to build rails running environment on FreeBSD 9.1


I know two methods:

Method 1: Install rails with ports, steps are:

  1. install ruby,lang/ruby19

  2. install gem, devel/ruby-gems

  3. install rails, www/rubygem-rails

Method 2: Install rails with gem (same on Mac OS X):

  1. install ruby,lang/ruby19

  2. install gem, devel/ruby-gems

  3. install rails, gem install rails

method 1 works well, but I want to try method 2, finish all steps of method2, I try to create my first app with command rails new hello, but failed, errors are followed:

What's the best method building rails development/running environment on FreeBSD 9.1?

/usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/vendor/net/http/persistent/ssl_reuse.rb:70:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/vendor/net/http/persistent/ssl_reuse.rb:70:in `block in connect'
    from /usr/local/lib/ruby/1.9/timeout.rb:54:in `timeout'
    from /usr/local/lib/ruby/1.9/timeout.rb:99:in `timeout'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/vendor/net/http/persistent/ssl_reuse.rb:70:in `connect'
    from /usr/local/lib/ruby/1.9/net/http.rb:755:in `do_start'
    from /usr/local/lib/ruby/1.9/net/http.rb:750:in `start'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/vendor/net/http/persistent.rb:628:in `start'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/vendor/net/http/persistent.rb:570:in `connection_for'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/vendor/net/http/persistent.rb:930:in `request'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/fetcher.rb:195:in `fetch'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/fetcher.rb:169:in `use_api'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/source/rubygems.rb:223:in `block in remote_specs'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/source/rubygems.rb:223:in `select'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/source/rubygems.rb:223:in `remote_specs'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/source/rubygems.rb:162:in `fetch_specs'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/source/rubygems.rb:66:in `specs'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/definition.rb:192:in `block (2 levels) in index'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/definition.rb:189:in `each'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/definition.rb:189:in `block in index'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/index.rb:9:in `build'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/definition.rb:185:in `index'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/definition.rb:179:in `resolve'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/definition.rb:114:in `specs'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/definition.rb:109:in `resolve_remotely!'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/installer.rb:83:in `run'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/installer.rb:14:in `install'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/cli.rb:247:in `install'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/vendor/thor/task.rb:27:in `run'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/vendor/thor/invocation.rb:120:in `invoke_task'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/vendor/thor.rb:344:in `dispatch'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/vendor/thor/base.rb:434:in `start'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/bin/bundle:20:in `block in <top (required)>'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/lib/bundler/friendly_errors.rb:4:in `with_friendly_errors'
    from /usr/local/lib/ruby/gems/1.9/gems/bundler-1.3.0/bin/bundle:20:in `<top (required)>'
    from /usr/local/bin/bundle:23:in `load'
    from /usr/local/bin/bundle:23:in `<main>'

Solution

  • Do not install Ruby from your package manager, prefer RBEnv to handle this job. To use it on FreeBSD:

    # as root
    pkg_add -r bash curl git libxml2 libxslt node-devel sqlite3 sudo wget
    
    # as user
    
    # rbenv
    git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
    git clone https://github.com/rbenv/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
    echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
    echo 'eval "$(rbenv init -)"' >> ~/.profile
    source ~/.profile
    
    # ruby and rails
    rbenv install 2.4.4
    rbenv global 2.4.4
    gem install rails
    

    I hope this will help you :)

    Source: http://chatchan.us/bsdonrails.pdf