سؤال

أنا أتساءل كيف يمكن للمرء استخدام باندلر مع سيناترا. الفكرة هي استخدام الأحجار الكريمة التي تقوم بتنزيلات bunder داخل مجلد .gems.

هل كانت مفيدة؟

المحلول 2

أعتقد أنه يتم وصف أفضل طريقة هنا في مدونة المحنين:

# 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

نصائح أخرى

داخل تطبيق Sinatra الخاص بك، عليك فقط أن تتطلب إعداد Bundler:

require "bundler/setup"
require "sinatra"

get "/" do
  "Hello world!"
end

بدلا من ذلك، إذا كنت لا ترغب في إضافة الإضافية require "bundler/setup" في الجزء العلوي من التطبيق الخاص بك، يمكنك بدلا من ذلك استدعاء Sinatra عبر bundle exec (على سبيل المثال bundle exec ruby myapp.rb)

هذا يفترض أن لديك Gemfile في جذر طلبك. قد تبدو مثل هذا:

source "http://rubygems.org"

gem "sinatra"

هذا يفترض أيضا أنك قمت بالفعل بتثبيت BONDLER (gem install bundler) وأنك هرب bundle install لتثبيت جميع تبعيات GEM.

نظرا لأن إجابتي الأصلية كانت قديمة جدا ولكن يبدو أن هناك اهتماما بهذا الموضوع هنا أحدث إصدار من إعداد Bundler / Sinatra الذي سيغطي معظم حالة الاستخدام:

الحد الأدنى config.ru

require './my_sinatra_app'
run MySinatraApp

بيئة env.rb الملف الذي يتطلب جميع الأحجار الكريمة المجمعة (يدعم أيضا تحميل مجموعة البيئة الحالية):

require 'bundler/setup'

APP_ENV = ENV["RACK_ENV"] || "development"

Bundler.require :default, APP_ENV.to_sym

ثم ملف التطبيق الخاص بك (مطالبة البيئة) باستخدام تطبيق Sinatra الخاص بك (Sinatra::Base):

require_relative 'env'

class MyApp < Sinatra::Base
  get "/" do
    "hello world"
  end
end

ابدأ تشغيل خادم التطوير الخاص بك مع Rackup، وسيتم تحميل Sinatra عبر BONDLER، سيتم الوصول إلى تطبيقك http: // localhost: 9292.

$ rackup

أو bundle exec rackup إذا لزم الأمر

تأكد من أن لديك GemFile مثل الواحدة التالية وأنت تعمل bundle أمر قبل بدء التطبيق

source "https://rubygems.org"

gem "sinatra"

gem "puma" # a better rack server than the default webrick

+1 ل دليل على موقع Bundler, ، ولكن إذا كان لديك تطبيق بسيط واستخدم DSL Sinatra في المستوى الأعلى، فأنت بحاجة إلى القيام بما يلي:

في GemFile الخاص بك (أخبر باندلر لا تتطلب Sinatra):

gem 'sinatra', :require => false

وفي ملف التطبيق (يتطلب صراحة Sinatra):

require 'rubygems'
require 'bundler'
Bundler.require
require 'sinatra'

get '/' do
  'hello world'
end

لاستخدام BONDLER مع تطبيق Sinatra، عليك فقط القيام بأمرين. أولا، قم بإنشاء GemFile.

gem 'sinatra'

ثم قم بإعداد ملف Config.ru الخاص بك لتحميل الحزمة قبل تحميل تطبيق Sinatra الخاص بك.

require 'rubygems'
require 'bundler'

Bundler.require

require './my_sinatra_app'
run MySinatraApp

ابدأ تشغيل خادم التطوير الخاص بك باستخدام Rackup، وسيتم تحميل Sinatra عبر Boundler.

rackup

مصدر بانددل مستندات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top