سؤال

أحاول كتابة تطبيق 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'.

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