4.2 বিকাশ সার্ভারের ডিফল্ট বাঁধাই আইপি কীভাবে পরিবর্তন করবেন?


89

আমাদের টিমের রেল অ্যাপ্লিকেশনটি 4.2 এ উন্নীত করার পরে, যেমন রিলিজ নোটটি উল্লিখিত হয়েছে, ডিফল্ট আইপ-এ rails serverবাঁধন করা হয় তা localhostথেকে পরিবর্তন করে 0.0.0.0

আমরা ভ্যাগ্র্যান্টের সাথে বিকাশ করি এবং হোস্ট মেশিনে ব্রাউজার থেকে সরাসরি সার্ভারটি অ্যাক্সেসযোগ্য হওয়া চাই।

rails s -b 0.0.0.0এখন থেকে প্রতিবার টাইপ করার পরিবর্তে , আমি আরও চমকপ্রদ সমাধান আছে কিনা তা অবাক করে দিয়েছি, যাতে rails sসার্ভারটি শুরু করার জন্য আমরা এখনও স্টেথটিকে সহজ ব্যবহার করতে পারি । সম্ভবত:

  • একটি কনফিগার ফাইল rails sযেখানে আমি ডিফল্ট বাইন্ডিং আইপি সংশোধন করতে পারি তা পড়ে (ব্যবহার না করে -c)
  • যোজনার সাথে এগিয়ে পোর্ট (চেষ্টা করা হলেও ব্যর্থ হয়েছে, নীচে সমস্যাটি দেখুন)
  • একটি বাঁদর প্যাচ র‌্যাক, যা ডিফল্ট বাঁধাই আইপি পরিবর্তন করে

এর পিছনে আসল লক্ষ্যটি হ'ল আমি চাই যে আমাদের দলের মধ্যে আপগ্রেডটি মসৃণ হোক, যে গ্লান্তি এড়ানো উচিত যে লোকেরা ক্রমাগত তাদের অনুপস্থিত -b 0.0.0.0অংশের কারণে তাদের রেল সার্ভার পুনরায় চালু করতে হবে ।

আমি ভ্যাব্রেন্ট পোর্ট ফরওয়ার্ড করার চেষ্টা করেছি, তবে হোস্ট মেশিনে Connection Refusedযখন দেখি তখনও পাব localhost:3000। দুটি কনফিগারেশন লাইন আমি চেষ্টা করেছিলাম:

config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 3000, guest_ip: '127.0.0.1', host: 3000

অফিসিয়াল ডক্সে কোনও প্রাসঙ্গিক নির্দেশনা খুঁজে পায়নি। যে কোন ধরণের সাহায্য গ্রহন করা হবে.


4
: পাগল 5 উত্তর stackoverflow.com/a/33852354/520567
akostadinov

বর্তমান রেলপথের 5 টি উত্তর হ'ল পুমা
প্রসূওয়ান

তবুও অন্য রেলগুলি 5 উত্তর: এনভ ভার্জ সেট করুন HOST=0.0.0.0, এবং রেলস সার্ভার স্বয়ংক্রিয়ভাবে এই মানটি ব্যবহার করবে।
টোফার হান্ট

উত্তর:


72

আমার এখানেও একই সমস্যা রয়েছে এবং আমি আজকে এর চেয়ে ভাল সমাধান পেয়েছি। এই কোডটি আপনার কনফিগারেশন / boot.rb এ কেবল যুক্ত করুন এবং এটি ভ্যাবাগ্র্যান্টের সাথে কাজ করা উচিত।

require 'rails/commands/server'
module Rails
  class Server
    def default_options
      super.merge(Host:  '0.0.0.0', Port: 3000)
    end
  end
end

PS: এর ভিত্তিতে: এই উত্তর


4
এই পদ্ধতির সাথে, আপনি অন্যান্য ডিফল্ট হারাবেন । বিকল্পের জন্য নীচে ভ্যানিটাসের উত্তর দেখুন।
মার্ক জোসেফ জর্জেনসেন

আমি সম্মত,
ভানিতার

47

আপনি ব্যবহার করতে পারেন মোড়ল একটি চালানোর জন্য Procfileআপনার কাস্টম কমান্ড সঙ্গে

# Procfile in Rails application root
web:     bundle exec rails s -b 0.0.0.0

এখন আপনার রেল অ্যাপ্লিকেশনটি এর সাথে শুরু করুন:

foreman start

ফোরম্যান সম্পর্কে ভাল বিষয়টি হ'ল আপনি প্রোকফাইলে (যেমন সাইডিকিক, মেলক্যাচার) অন্যান্য অ্যাপ্লিকেশন যুক্ত করতে পারেন।

ফোরম্যান সম্পর্কে খারাপ জিনিস হ'ল আপনার দলটিকে foreman startপরিবর্তে চালানোর জন্য প্রশিক্ষণ দিতে হবে rails s


ধন্যবাদ আমি আপনার উত্তরটি কয়েক দিনের মধ্যে গ্রহণ করব যদি এটির সেরা সমাধান হিসাবে দেখা যায় :)
হুয়াং তাও

সংক্ষিপ্তসারগুলিও foreman sকাজ করবে - এ থেকে সহজতর রূপান্তর হতে পারে rails s
এলিয়ট

18

একই সমস্যা পূরণ। রেলগুলি তৈরি করুন ব্লগটি ৪.২ সার্ভারটি সমস্ত ইন্টারফেস শুনে

কনফিগার / boot.rb এ নিম্নলিখিতগুলি যুক্ত করুন

require 'rails/commands/server'

module Rails
  class Server
    alias :default_options_bk :default_options
    def default_options
      default_options_bk.merge!(Host: '0.0.0.0')
    end
  end
end

4
এই উত্তরটির মূল ডিফল্টগুলি না হারানোর অতিরিক্ত সুবিধা রয়েছে (যথা, পোর্ট 3000!)
মার্ক জোসেফ জর্জেনসেন

9

পুমা ৩.২.১.১ এর সাথে 5.1.7 রেলের জন্য নির্বাচিত উত্তরটি কাজ করে না, তবে আমি আমার config/puma.rbফাইলে নিম্নলিখিতটি যুক্ত করে এটি সম্পাদন করেছি :

set_default_host '0.0.0.0' # Note: Must come BEFORE defining the port

port ENV.fetch('PORT') { 3000 }

আমি ডিএসএল ফাইল পরিদর্শন করে এটি নির্ধারণ করেছি । এটি instance_evalসেই ফাইলটিতে ব্যবহার করে, তাই এটি করার সম্ভবত অন্যান্য উপায়ও রয়েছে তবে এটি আমার কাছে সবচেয়ে যুক্তিসঙ্গত বলে মনে হয়েছিল।


ধন্যবাদ, আপনি আমাকে বাঁচিয়েছেন !!
Proz1g

7

আপনি যদি ডিফল্ট বিকল্পগুলি রেখে দেন config/boot.rbতবে রাক এবং রেলগুলির জন্য সমস্ত কমান্ড বৈশিষ্ট্য ব্যর্থ হয় (উদাহরণ: rake -Tবা rails g model user)! সুতরাং, bin/railsলাইনের পরে এটি যুক্ত করুন require_relative '../config/boot'এবং কোডটি কেবল রেল সার্ভার কমান্ডের জন্যই কার্যকর করা হয়:

if ARGV.first == 's' || ARGV.first == 'server'
  require 'rails/commands/server'
  module Rails
    class Server
      def default_options
        super.merge(Host:  '0.0.0.0', Port: 3000)
      end
    end
  end
end

bin/railsফাইলটি এই মত loks:

#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application',  __FILE__)
require_relative '../config/boot'

# Set default host and port to rails server
if ARGV.first == 's' || ARGV.first == 'server'
  require 'rails/commands/server'
  module Rails
    class Server
      def default_options
        super.merge(Host:  '0.0.0.0', Port: 3000)
      end
    end
  end
end

require 'rails/commands'

1

এখানে আমি একটি সহজ সমাধান যা ব্যবহার করছি। আমি ইতিমধ্যে ডটেনভ এবং পুমা-হিরকু পছন্দ করি / তাই আপনার যদি এটি ব্যবহার না করে তবে এটি আপনার পক্ষে নাও পারে।

/config/puma.rb

plugin :heroku

রত্ন

gem 'dotenv-rails', groups: [:development, :test]

.env

PORT=8080

এখন আমি দেব এবং উত্পাদন উভয় দিয়েই শুরু করতে পারি rails s


1

যদি আপনি পরিবেশের ভেরিয়েবলগুলি পরিচালনা করতে ডকার বা অন্য কোনও সরঞ্জাম ব্যবহার করেন, আপনি আবশ্যক HOSTআইপিতে পরিবেশ পরিবর্তনশীল সেট করতে পারেন ।

উদাহরণ: HOST=0.0.0.0

docker.envআপনি ডকার ব্যবহার করেন বা .envআপনি যদি ফোরম্যান ব্যবহার করেন তবে ফাইলটিতে এটি যুক্ত করুন ।


1

পুমার সাথে 5 রেলগুলির জন্য নির্বাচিত উত্তরটি কাজ করে না। আপনি যেমন ত্রুটি পেতে পারেন:cannot load such file -- rails/commands/server

সঠিক সমাধানের জন্য নিম্নলিখিতগুলি যুক্ত করুন config/puma.rb:

bind 'tcp://0.0.0.0:3000'

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.