سؤال
أنا أتساءل كيف يمكن للمرء استخدام باندلر مع سيناترا. الفكرة هي استخدام الأحجار الكريمة التي تقوم بتنزيلات 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