Bind rails server to 127.0.0.1 by default

前端 未结 4 883
长发绾君心
长发绾君心 2021-02-19 01:09

I\'d like to bind the rails server to 127.0.0.1, instead of 0.0.0.0 so its not accessible when I\'m working from coffee shops.

Is there a configuration file where I can

相关标签:
4条回答
  • 2021-02-19 01:41

    I use Foreman as a process manager in development.

    After adding gem 'foreman' to your Gemfile and running bundle install, create a file Procfile in the root of your application directory.

    While you can add lines to manage other processes, mine just reads:

    web: rails server -p $PORT -b 127.0.0.1
    

    Then, to start the Rails server via the Procfile, run foreman start. If you have other processes here (Redis, workers) they'll boot at the same time.

    0 讨论(0)
  • 2021-02-19 01:47

    If you put the default options on config/boot.rb then all command attributes for rake and rails fails (example: rake -T or rails g model user)! So, append this to bin/rails after line require_relative '../config/boot' and the code is executed only for the rails server command:

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

    The bin/rails file loks like this:

    #!/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:  '127.0.0.1', Port: 10524)
          end
        end
      end
    end
    
    require 'rails/commands'
    
    0 讨论(0)
  • 2021-02-19 01:49

    You can make a bash script to just run the command by default:

    #!/bin/bash
    rails server -b 127.0.0.1
    

    Put it in the same folder as your project, name it anything you want (e.g. devserv), then

    chmod +x devserv
    

    And all you have to do is ./devserv

    0 讨论(0)
  • 2021-02-19 01:50

    If you are searching for Rails 5: Answer


    In Rails ~> 4.0 you can customize the boot section of the Server class:

    In /config/boot.rb add this lines:

    require 'rails/commands/server'
    
    module Rails
      class Server
        def default_options
          super.merge({Port: 10524, Host: '127.0.0.1'})
        end
      end
    end
    

    As already answered on this questions:

    How to change Rails 3 server default port in develoment?

    How to change the default binding ip of Rails 4.2 development server?

    0 讨论(0)
提交回复
热议问题