سيناترا على رف تحت راكب عودة الصفحات 0 بايت
سؤال
أحاول كتابة تطبيق Sinatra الذي سيتم تشغيله على خادم ركاب مشترك. في الوقت الحالي ، سأكون سعيدًا فقط بالحصول على "Hello World" ، لكن هناك شيئًا ما لا يعمل بشكل صحيح. أملك:
config.ru
require 'vendor/sinatra-lib/sinatra.rb'
set :environment, :production
disable :run
require 'myapp.rb'
run Sinatra::Application
myapp.rb
get '/' do
"Hello world!"
end
وبالطبع كل الدعم libs الذي أحتاجه للسيناترا تحت /البائع /sinatra-lib. يمكنني أن أرفع هذا الحمل الدقيق على الجهاز المحلي الخاص بي ، ويعمل مثل البطل. ومع ذلك ، على الجهاز البعيد ، أحصل على ردود 0 بايت لأي عنوان URL أحاول زيارته. لاحظ أن لديّ /دليل عام ، ويمكنني عرض الصفحات من ذلك بنجاح ، لذلك أعتقد أن الرف لا يزال يستجيب. أيضًا ، يمكنني تشغيل تطبيق رف أساسي دون أي مشاكل ، لذلك يجب تكوين الرف بشكل صحيح (على الأقل ، بشكل صحيح لتطبيقات الرف).
في هذه المرحلة ، فإن الشيء الوحيد الذي يمكنني التفكير فيه هو التحقق من إصدار الحامل ، وما إلى ذلك ، على الخادم البعيد. ليس لدي تحكم كامل في المربع ، لذلك ليس لدي بالفعل إخراج السجل للمشاركة. يمكنني أن أحاول مطاردته ، إذا كان الأمر مهمًا ، لكنني آمل أن يقفز شيء ما إلى شخص ما.
المحلول 2
نشكركم جميعًا على اللعب ، تبين أنه مشكلة تبعية - الخادم الذي تم نشره عليه هو تشغيل نسخة من الرف التي كانت أكبر من أن تدعم سيناترا. الكثير من الأشياء الأخرى الجيدة للتفكير ، رغم ذلك.
نصائح أخرى
أعتقد أن المشكلة هي أن ملفات سيناترا الأخرى ليست في الحمل. حاول إعادة تسمية vendor/sinatra-lib
داخل vendor/sinatra
, ، وإذا كان لا يزال لا يعمل ، فحاول إضافة هذا في الجزء العلوي من config.ru
, ، بدلاً من require 'vendor/...'
$: << 'vendor/sinatra'
require 'sinatra'
ملاحظة جانبية صغيرة: لا يُطلب منك تمرير ملحق الملف (.rb) إلى require
, ، لذلك يمكنك أن تفعل require 'myapp'
بدلاً من require 'myapp.rb'
.