আমার ডেভলপমেন্ট মেশিনে, আমি পোর্ট 10524 ব্যবহার করি So সুতরাং আমি আমার সার্ভারটি এইভাবে শুরু করি:
rails s -p 10524
ডিফল্ট পোর্টকে 10524 এ পরিবর্তন করার কোনও উপায় আছে যাতে প্রতিবার সার্ভার চালু করার পরে আমাকে পোর্ট যুক্ত করতে হবে না?
আমার ডেভলপমেন্ট মেশিনে, আমি পোর্ট 10524 ব্যবহার করি So সুতরাং আমি আমার সার্ভারটি এইভাবে শুরু করি:
rails s -p 10524
ডিফল্ট পোর্টকে 10524 এ পরিবর্তন করার কোনও উপায় আছে যাতে প্রতিবার সার্ভার চালু করার পরে আমাকে পোর্ট যুক্ত করতে হবে না?
উত্তর:
প্রথম - আপনার মণি পথে কোনও কিছু সম্পাদনা করবেন না! এটি সমস্ত প্রকল্পগুলিকে প্রভাবিত করবে এবং আপনার পরে অনেক সমস্যা হবে ...
আপনার প্রকল্পে script/rails
এইভাবে সম্পাদনা করুন :
#!/usr/bin/env ruby
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
APP_PATH = File.expand_path('../../config/application', __FILE__)
require File.expand_path('../../config/boot', __FILE__)
# THIS IS NEW:
require "rails/commands/server"
module Rails
class Server
def default_options
super.merge({
:Port => 10524,
:environment => (ENV['RAILS_ENV'] || "development").dup,
:daemonize => false,
:debugger => false,
:pid => File.expand_path("tmp/pids/server.pid"),
:config => File.expand_path("config.ru")
})
end
end
end
# END OF CHANGE
require 'rails/commands'
নীতিটি সহজ - আপনি সার্ভার রানারকে বানর-প্যাচিং করছেন - সুতরাং এটি কেবল একটি প্রকল্পকে প্রভাবিত করবে।
আপডেট : হ্যাঁ, আমি জানি যে এখানে ব্যাশ স্ক্রিপ্ট সহ সহজ সমাধান রয়েছে:
#!/bin/bash
rails server -p 10524
তবে এই সমাধানটির গুরুতর অসুবিধা রয়েছে - এটি নরকের মতো বিরক্তিকর।
alias rs='rails server -p 10524'
require 'rails/commands'
নতুন জিনিস নিয়ে আপনি পেস্ট পরে অন্যথায় এটি এখনও বন্দর 3000. চেষ্টা করবে।
alias rs
আমি নিম্নলিখিতগুলি যুক্ত করতে চাই config/boot.rb
:
require 'rails/commands/server'
module Rails
class Server
alias :default_options_alias :default_options
def default_options
default_options_alias.merge!(:Port => 3333)
end
end
end
super
ওরফে হ্যাকের পরিবর্তে ব্যবহার করুন ।
super
ওরফেটির পরিবর্তে ব্যবহার করা হয়, তবে এটি ভুল পদ্ধতি বলে। এটি ::Rack::Server
ডিফল্ট_অপশনগুলির সংস্করণটিকে কল করে ।
prepend
ব্যবহারের পরিবর্তে একটি বেনামে মডিউল রাখতে পারেন alias
। এটি একটি পরিষ্কার ব্যবহার করতে পারবেন super
।
Rails::Server
ক্ষেত্রে সংজ্ঞায়িত হয়ে উঠবে যখন এটি হওয়া উচিত নয় (উদাহরণস্বরূপ রেলস কনসোল চালানো)। সুতরাং আমি কোডটি শেষের দিকে রাখার পরামর্শ দিচ্ছি, এটি application.rb
দিয়ে রক্ষা করুন if defined?(Rails::Server)
।
পূর্ববর্তী দুটি উত্তর মিশ্রন করে, রেল 4.0.4 (এবং সম্ভবত, সম্ভবত) এর জন্য, এটি শেষের দিকে যথেষ্ট config/boot.rb
:
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge({Port: 10524})
end
end
end
config.action_mailer.default_url_options
, অন্যথায় এটি এখনও 3000 বন্দরটির দিকে ইঙ্গিত করছে
আমরা পুমাকে একটি ওয়েব সার্ভার হিসাবে এবং ডোটেনভকে বিকাশের পরিবেশগত পরিবর্তনশীল সেট করতে ব্যবহার করছি । এর অর্থ আমি এর জন্য পরিবেশের পরিবর্তনশীল সেট করতে PORT
পারি এবং এটি পুমা কনফিগে রেফারেন্স করতে পারি।
# .env
PORT=10524
# config/puma.rb
port ENV['PORT']
তবে আপনাকে এর foreman start
পরিবর্তে আপনার অ্যাপ্লিকেশনটি শুরু করতে হবে rails s
, অন্যথায় পুমা কনফিগারেশন সঠিকভাবে পড়তে পারে না।
আমি এই পদ্ধতির পছন্দ করি কারণ কনফিগারেশনটি একইভাবে উন্নয়ন এবং উত্পাদনে কাজ করে, প্রয়োজনে আপনি কেবল বন্দরটির মান পরিবর্তন করেন।
রাদেক এবং স্পেনসারের দ্বারা অনুপ্রাণিত হয়ে ... রেল 4 (.0.2 - রুবি ২.১.০) এ, আমি এটি কনফিগার / বুট.আরবিতে যুক্ত করতে সক্ষম হয়েছি :
# config/boot.rb
# ...existing code
require 'rails/commands/server'
module Rails
# Override default development
# Server port
class Server
def default_options
super.merge(Port: 3100)
end
end
end
ডিফল্ট_অপশনগুলিতে সমস্ত অন্যান্য কনফিগারেশন এখনও সেট করা আছে এবং কমান্ড-লাইন স্যুইচগুলি এখনও ডিফল্টকে ওভাররাইড করে।
২.৩ কারাগারের সমাধান script/server
:
#!/usr/bin/env ruby
require 'rack/handler'
module Rack::Handler
class << WEBrick
alias_method :old_run, :run
end
class WEBrick
def self.run(app, options={})
options[:Port] = 3010 if options[:Port] == 3000
old_run(app, options)
end
end
end
require File.dirname(__FILE__) + '/../config/boot'
require 'commands/server'
require File.dirname(__FILE__) + '/../config/boot'
করার require 'rack/handler'
জন্য আমাকে আগে সরে যেতে হয়েছিল ।
আপনি ইনস্টল করতে পারেন $ gem install foreman
, এবং আপনার Procfile
পছন্দ মত সংজ্ঞায়িত হিসাবে আপনার সার্ভার শুরু করতে ফোরাম ব্যবহার করতে পারেন:
web: bundle exec rails -p 10524
আপনি foreman
এখানে রত্নের ডক্স চেক করতে পারেন : আরও তথ্যের জন্য https://github.com/ddollar/foreman
এই পদ্ধতির সুবিধাটি আপনি কেবল কনফিগারেশনে পোর্টটি সহজেই সেট / পরিবর্তন করতে পারবেন এবং এটির জন্য খুব বেশি কোড যুক্ত করার প্রয়োজন হয় না তবে Procfile
সেই ফোরম্যান আপনার পক্ষে বিভিন্ন পদক্ষেপ যুক্ত করতে পারেন যাতে আপনি ডান হন না ' আপনি যখনই আপনার অ্যাপ্লিকেশন শুরু করতে চান প্রতিটি সময় তাদের যেতে হবে না:
bundle: bundle install
web: bundle exec rails -p 10524
...
...
চিয়ার্স
একটি নির্দিষ্ট পোর্ট সহ কমান্ডের জন্য আপনার শেলটিতে উপকরণ তৈরি করুন।
script/rails
। তার জন্য ধন্যবাদ.
config/puma.rb
ডিফল্ট পুমা সার্ভার