Как изменить порт по умолчанию приложения Rails 4?
Я знаю, что могу запустить сервер rails на другом порту через . Но я хотел бы настроить другой порт для каждого приложения, пока я запускаю webrick.
какие идеи?
С уважением Феликс!--2-->
5 ответов
быстрое решение: добавить 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.
Вариант 1:
вы можете запустить WEBrick так:
rails server -p 8080
где 8080-это порт. Если вам нравится, вы можете бросить это в сценарий bash для удобства.
Вариант 2:
вы можете установить $ gem install foreman
и используйте foreman для запуска вашего производственного веб-сервера( например, unicorn), как определено в вашем Procfile
вот так: $ foreman run web
. Если unicorn - ваш веб-сервер, вы можете указать порт в конфигурационном файле unicorn (как и в большинстве вариантов сервера). Выгода из этого подхода вы можете не только установить порт в конфигурации, но и использовать среду, которая ближе к производству.
если вы поместите параметры по умолчанию на config/boot.rb
затем все атрибуты команды для rake и rails терпят неудачу (пример:rake -T
или rails g model user
)! Итак, добавьте это к bin/rails
после строки require_relative '../config/boot'
и код выполняется только для команды 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
The 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'
Для Катушек 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)