I'm wondering how one can use Bundler with Sinatra. The idea is to use the gems that Bundler downloads inside the .gems folder.
Bundler provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that you need. Bundler prevents dependencies and ensures that the gems you need are present in development, staging, and production.
As of Ruby 2.6. 0preview3, Bundler is part of core Ruby.
In Rails, bundler provides a constant environment for Ruby projects by tracking and installing suitable gems that are needed. It manages an application's dependencies through its entire life, across many machines, systematically and repeatably. To use bundler, you need to install it.
Inside your Sinatra app, you just have to require the bundler setup:
require "bundler/setup" require "sinatra" get "/" do "Hello world!" end
Alternatively, if you don't want to add the additional require "bundler/setup"
at the top of your app, you can instead invoke sinatra via bundle exec
(e.g. bundle exec ruby myapp.rb
)
This assumes that you have a Gemfile
in the root of your application. It might look like this:
source "http://rubygems.org" gem "sinatra"
This also assumes that you've already installed bundler (gem install bundler
) and that you ran bundle install
to install all the gem dependencies.
I believe the best way is described here on EngineYard blog:
# This makes sure the bundled gems are in our $LOAD_PATH require File.expand_path(File.join(File.dirname(__FILE__), 'vendor', 'gems', 'environment')) # This actually requires the bundled gems Bundler.require_env class MyApp < Sinatra::Base # stuff end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With