-p
オプションを使用して、別のポートでRailsサーバーを開始できることを知っています。
何か案は?
よろしくフェリックス
クイックソリューション:Rakefile
に追加
task :server do
`bundle exec Rails s -p 8080`
end
次にrake server
を実行します
これをconfig/boot.rb
に追加します:
require 'Rails/commands/server'
module DefaultOptions
def default_options
super.merge!(Port: 3001)
end
end
Rails::Server.send(:prepend, DefaultOptions)
注:Ruby> = 2.0が必要です。
次のようにWEBrickを起動できます。
Rails server -p 8080
8080はポートです。必要に応じて、便宜上bashスクリプトでこれをスローできます。
$ gem install foreman
をインストールし、フォアマンを使用して、$ foreman run web
のようにProcfile
で定義されている本番Webサーバー(Unicornなど)を起動できます。 UnicornがWebサーバーの場合、Unicorn構成ファイルでポートを指定できます(ほとんどのサーバーの選択と同様)。このアプローチの利点は、設定でポートを設定できるだけでなく、本番環境により近い環境を使用していることです。
config/boot.rb
にデフォルトオプションを設定すると、rakeおよびRailsのすべてのコマンド属性が失敗します(例:rake -T
またはRails g model user
)!したがって、これをbin/Rails
のrequire_relative '../config/boot'
行の後に追加すると、コードはRailsサーバーコマンドに対してのみ実行されます。
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
ファイルは次のように見えます:
#!/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'
Rails 5.1:
# config/boot.rb
# ... existing code
require 'Rails/command'
require 'Rails/commands/server/server_command'
Rails::Command::ServerCommand.send(:remove_const, 'DEFAULT_PORT')
Rails::Command::ServerCommand.const_set('DEFAULT_PORT', 3333)