webentwicklung-frage-antwort-db.com.de

Festlegen von config.action_controller.default_url_options = {: Host = '#' '} für jede Umgebung

Im Moment verwende ich dies, was für den Entwicklungshost funktioniert, aber ich muss den {: Host => ""} - Code manuell ändern, wenn ich zur Produktion übergehe.

post.rb

def share_all
  url =  Rails.application.routes.url_helpers.post_url(self, :Host => 'localhost:3000')
  if user.authentications.where(:provider => 'Twitter').any?
    user.Twitter_share(url)  
  end
end

Ich möchte dies verwenden und dann die default_url_options pro Umgebung definieren:

post.rb

def share_all
  url =  Rails.application.routes.url_helpers.post_url(self)
  if user.authentications.where(:provider => 'Twitter').any?
    user.Twitter_share(url)  
  end
end

Ich habe versucht, dies zu meiner config /virones/development.rb hinzuzufügen, bekomme aber immer noch den Fehler "Fehlender Host, zu dem ein Link erstellt werden kann! 

entwicklung.rb

config.action_controller.default_url_options = {:Host => "localhost:3000"}

Und ich habe es sogar so versucht:

entwicklung.rb

config.action_controller.default_url_options = {:Host => "localhost", :port => "3000"}

BEARBEITEN:

Ich habe jetzt auch diesem gefolgt und noch den gleichen Fehlerführer http://edgeguides.rubyonrails.org/action_controller_overview.html#default_url_options

anwendungscontroller

class ApplicationController < ActionController::Base
  protect_from_forgery
  include ApplicationHelper
  def default_url_options
    if Rails.env.production?
      { :Host => "example.com"}
    else
      {:Host => "example1.com"}
    end
  end
end

Das macht mich verrückt, was fehlt mir hier ???

55
trying_hal9000

Okay, ich habe herausgefunden, dass es die richtige Schreibweise ist 

Rails.application.routes.default_url_options[:Host] = 'localhost:3000'

:)

111
trying_hal9000

Sie müssen Ihren Server neu starten, bevor die Änderungen an dieser Datei wirksam werden.

6
Ryan Bigg

Übernehmen Sie den default_url_options Ihrer Anwendung von ActionMailer.

Sie möchten die Dinge möglichst DRY halten, idealerweise sollten Sie Ihren Host und Port an mehreren Stellen für dieselbe Umgebung nicht hart codieren, es sei denn, Ihre ActionMailer tatsächlich verwendet einen anderen Host und port als der Rest Ihrer Application.

Um den default_url_options für Ihre gesamte Application festzulegen, fügen Sie Ihrer config/environment.rb-Datei einfach die folgende Zeile hinzu (MyApp wird in den Namen Ihrer App geändert): 

# Set the default Host and port to be the same as Action Mailer.
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options

Dadurch wird Ihr Problem behoben und der default_url_options Ihrer Application automatisch auf den gleichen Code wie Ihr config.action_mailer.default_url_options eingestellt:

$ MyApp::Application.config.action_mailer.default_url_options
#=> {:Host=>"lvh.me", :port=>"3000"}

$ MyApp::Application.default_url_options
#=> {:Host=>"lvh.me", :port=>"3000"}
5
Joshua Pinter

config.action_mailer.default_url_options = {: Host => "Ihr Host"}}

zum Beispiel Ihr Host localhost: 3000

sie können dies in test.rb-, development.rb-, production.rb-Dateien eingeben. Der Host kann sich von Umgebung zu Umgebung unterscheiden

0