2017-02-03 1 views
0

J'ai fondais une application avec une application blogging (de octopress) submoduled, le guide suivant:Sinatra et Rails - à partir d'une application submoduled

http://www.nickhammond.com/setting-octopress-jekyll-blog-rails-application/

Il est un peu hors de date, mais autre que Avoir à changer autour de quelques gemmes semble fonctionner correctement. Le guide suggère d'avoir un dossier appelé "Blog" dans votre répertoire principal de l'application parente, dans lequel vit l'application la plus petite. Ici, on m'a dit de changer le fichier config.ru et de le renommer en run.rb. Le fichier est comme suit:

/blog/run.rb

require 'bundler/setup' 
require 'sinatra/base' 

# The project root directory 
$root = ::File.dirname(__FILE__) 

class Blog < Sinatra::Base 

    get(/.+/) do 
    send_sinatra_file(request.path) {404} 
    end 

    not_found do 
    send_file(File.join(File.dirname(__FILE__), 'public', '404.html'), {:status => 404}) 
    end 

    def send_sinatra_file(path, &missing_file_block) 
    file_path = File.join(File.dirname(__FILE__), 'public', path) 
    file_path = File.join(file_path, 'index.html') unless file_path =~ /\.[a-z]+$/i 
    File.exist?(file_path) ? send_file(file_path) : missing_file_block.call 
    end 

end 

Mon fichier config.ru dans mon application parent se présente comme suit:

/config.ru

# This file is used by Rack-based servers to start the application. 

require ::File.expand_path('../config/environment', __FILE__) 
require './blog/run' 

# Action Cable requires that all classes are loaded in advance 
Rails.application.eager_load! 

map '/' do 
    run Rails.application 
end 

map '/blog' do 
    run Blog 
end 

Lorsque je visite localhost: 3000/blog, je ne reçois pas une erreur route introuvable, cependant recevoir:

This localhost page can’t be found 

No web page was found for the web address: http://localhost:3000/blog 

Toute aide sur la façon de configurer correctement mon fichier config.ru serait grandement appréciée, merci d'avance.

Répondre

0

S'il vous plaît essayer de déplacer

require '/blog/run' 


map '/blog' do 
    run Blog 
end 

au routes.rb et voir si cela aide.

Mise à jour: (à la fin, il a dit de changer votre config.ru à cela).

require ::File.expand_path('../config/environment', __FILE__) 
require './blog/run' # Require the run.rb file that we created earlier which has the Rack setup for the blog 

map '/' do # By default we want everything to hit our Rails application 
    run Rails::Application 
end 

map '/blog' do # Anything at blog/ and beyond will then hit the blog 
    run Blog 
end 

Veuillez essayer.

+0

En le plaçant à l'intérieur de la méthode routes donne une erreur: méthode non définie carte » pour # (NoMethodError) et en dehors de la méthode donne un semblable aussi. – Mark

+0

@Mark S'il vous plaît lire ma mise à jour et essayez cette étape et dites-moi si vous avez des erreurs. – EVX

+0

Tout d'abord merci de prendre le temps d'essayer de l'aide. J'ai essayé votre suggestion, qui est aussi loin que je peux voir ce que je l'avais avant moins le Rails.application.eager_load !, mais quand j'essaye de nagivate à localhost: 3000/blog je reçois la même erreur, pas de page Web a été trouvé pour l'adresse Web: http: // localhost: 3000/blog – Mark