Tôi tự hỏi làm thế nào người ta có thể sử dụng Bundler với Sinatra. Ý tưởng là sử dụng các gem mà Bundler tải bên trong thư mục .gems.Sinatra + Bundler?
Trả lời
Tôi tin rằng cách tốt nhất được mô tả here trên 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
Bên trong ứng dụng Sinatra của bạn, bạn chỉ cần yêu cầu cài đặt bundler:
require "bundler/setup"
require "sinatra"
get "/" do
"Hello world!"
end
Ngoài ra, nếu bạn không muốn thêm thêm require "bundler/setup"
ở phía trên cùng của ứng dụng, bạn thay vì có thể gọi Sinatra qua số bundle exec
(ví dụ: bundle exec ruby myapp.rb
)
Giả định rằng bạn có Gemfile
trong thư mục gốc của đơn đăng ký. Nó có thể trông như thế này:
source "http://rubygems.org"
gem "sinatra"
này cũng giả định rằng bạn đã cài đặt bundler (gem install bundler
) và rằng bạn chạy bundle install
để cài đặt tất cả các phụ thuộc đá quý.
Như câu trả lời ban đầu của tôi đã khá cũ nhưng có vẻ là vẫn quan tâm đến chủ đề này, đây là phiên bản mới nhất của bundler/thiết lập Sinatra mà sẽ bao gồm hầu hết các trường hợp sử dụng:
Một tối thiểu config.ru
require './my_sinatra_app'
run MySinatraApp
Một môi trường env.rb
tập tin đó yêu cầu tất cả các đá quý kèm (cũng hỗ trợ tải nhóm môi trường hiện tại của):
require 'bundler/setup'
APP_ENV = ENV["RACK_ENV"] || "development"
Bundler.require :default, APP_ENV.to_sym
Sau đó, tập tin ứng dụng của bạn (yêu cầu môi trường) với ứng dụng của bạn Sinatra (Sinatra::Base
):
require_relative 'env'
class MyApp < Sinatra::Base
get "/" do
"hello world"
end
end
Bắt đầu máy chủ phát triển của bạn với rackup và Sinatra sẽ được tải qua Bundler, ứng dụng của bạn sẽ có thể truy cập từ http://localhost:9292.
$ rackup
hoặc bundle exec rackup
nếu cần
Hãy chắc chắn rằng bạn có một Gemfile như một sau đây và bạn hãy chạy lệnh bundle
trước khi bắt đầu ứng dụng
source "https://rubygems.org"
gem "sinatra"
gem "puma" # a better rack server than the default webrick
+1 cho guide on the bundler website, nhưng nếu bạn có một ứng dụng đơn giản và sử dụng dsl của Sinatra ở cấp cao nhất, sau đó bạn cần phải làm như sau:
in y Gemfile của chúng tôi (nói bundler không đòi hỏi Sinatra):
gem 'sinatra', :require => false
và trong hồ sơ của ứng dụng (yêu cầu rõ ràng Sinatra):
require 'rubygems'
require 'bundler'
Bundler.require
require 'sinatra'
get '/' do
'hello world'
end
- 1. Tránh khai báo phụ thuộc Bundler thừa cho Rack
- 2. Cài đặt một viên đá quý từ Github với Bundler
- 3. Crontab + rails3 + bundler
- 4. Bundler - tải nhiều Gemfiles
- 5. Ít treo ứng dụng Sinatra
- 6. Sinatra Variable Phạm vi
- 7. Máy chủ Sinatra đẩy?
- 8. Sinatra và http PUT
- 9. Sinatra - API - Xác thực
- 10. Điều kiện Sinatra
- 11. Sinatra vs. Rails
- 12. Rails 3/Bundler đá quý: 'Phương pháp xác định' thiết lập' cho Bundler: Module (NoMethodError)'
- 13. Tải lên tệp bằng Sinatra
- 14. Sinatra và dấu chấm hỏi
- 15. Chạy Sinatra trên cổng 80
- 16. Python tương đương với Sinatra
- 17. Thêm Bootstrap Less vào Sinatra
- 18. Sinatra trực tuyến với Puma?
- 19. Erb với Sinatra trong ruby
- 20. đá quý Rails Bundler cài đặt
- 21. RuntimeError với mysql2 và rails3 (bundler)
- 22. RVM Gemset - Bundler & Capistrano trong Sản xuất
- 23. RVM: Không thể cài đặt bundler 1.1.0
- 24. RVM/hạ cấp đá quý bundler
- 25. Trình bundler hoạt động như thế nào?
- 26. Ruby Bundler nhiều nguồn trong Gemfile
- 27. Bundler: `bundle package` với: git source
- 28. Rails - lỗi bundler khi sử dụng mỏng
- 29. OSX bundler cài đặt command not found
- 30. Sinatra access-control-allow-origin cho thư mục công cộng sinatra
Yehuda Katz có một bài viết tuyệt vời về việc sử dụng bundler hôm nay: http: // yehudakatz .com/2009/11/03/using-the-new-gem-bundler-today/ –
Ngoài ra, tài liệu về bundler cũng có một ví dụ tốt về cách thiết lập ứng dụng sinatra http://gembundler.com/sinatra.html và nó là hiện tại. – christophercotton