2010-10-29 9 views
0

Je veux utiliser la nouvelle fonctionnalité Rails3 qui vous permet d'intégrer une application Sinatra dans les rails.Où dois-je placer les fichiers Sinatra destinés à être intégrés dans une application Rails3?

Dans mon fichier itinéraires, je:

# app names changed to protect the (not so) innocent 
MyApp::Application.routes.draw do 
    match "/service", :to => MyService 
    ... 
end 

Et /lib/my_service.rb je

class MyService < Sinatra::Base 
    get "/" do 
    "Hello World" 
    end 
end 

Lorsque je tente de démarrer le serveur Rails je reçois Uninitialized MyService constante (NameError), que je soupçonne signifie que mon fichier Sinatra est dans le mauvais répertoire. Où suis-je censé le mettre?

texte d'erreur complète:

rails/my_app » rails server  
=> Booting WEBrick 
=> Rails 3.0.1 application starting in development on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
Exiting 
/Users/marshallyount/Projects/clients/method/rails/my_app/config/routes.rb:2:in `block in <top (required)>': uninitialized constant MyService (NameError) 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/actionpack-3.0.1/lib/action_dispatch/routing/route_set.rb:233:in `instance_exec' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/actionpack-3.0.1/lib/action_dispatch/routing/route_set.rb:233:in `draw' 
from /Users/marshallyount/Projects/clients/method/rails/my_app/config/routes.rb:1:in `<top (required)>' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/application.rb:127:in `block in reload_routes!' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/application.rb:127:in `each' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/application.rb:127:in `reload_routes!' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/application.rb:120:in `block in routes_reloader' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/activesupport-3.0.1/lib/active_support/file_update_checker.rb:32:in `call' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/activesupport-3.0.1/lib/active_support/file_update_checker.rb:32:in `execute_if_updated' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/actionpack-3.0.1/lib/action_dispatch/railtie.rb:14:in `block (2 levels) in <class:Railtie>' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/activesupport-3.0.1/lib/active_support/callbacks.rb:419:in `_run_prepare_callbacks' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/actionpack-3.0.1/lib/action_dispatch/middleware/callbacks.rb:40:in `initialize' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:33:in `new' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:33:in `build' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:79:in `block in build' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:79:in `each' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:79:in `inject' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/actionpack-3.0.1/lib/action_dispatch/middleware/stack.rb:79:in `build' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/application.rb:162:in `app' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/application/finisher.rb:35:in `block in <module:Finisher>' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/initializable.rb:25:in `instance_exec' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/initializable.rb:25:in `run' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/initializable.rb:50:in `block in run_initializers' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/initializable.rb:49:in `each' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/initializable.rb:49:in `run_initializers' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/application.rb:134:in `initialize!' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/application.rb:77:in `method_missing' 
from /Users/marshallyount/Projects/clients/method/rails/my_app/config/environment.rb:5:in `<top (required)>' 
from /Users/marshallyount/Projects/clients/method/rails/my_app/config.ru:3:in `require' 
from /Users/marshallyount/Projects/clients/method/rails/my_app/config.ru:3:in `block in <main>' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/rack-1.2.1/lib/rack/builder.rb:46:in `instance_eval' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/rack-1.2.1/lib/rack/builder.rb:46:in `initialize' 
from /Users/marshallyount/Projects/clients/method/rails/my_app/config.ru:1:in `new' 
from /Users/marshallyount/Projects/clients/method/rails/my_app/config.ru:1:in `<main>' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/rack-1.2.1/lib/rack/builder.rb:35:in `eval' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/rack-1.2.1/lib/rack/builder.rb:35:in `parse_file' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/rack-1.2.1/lib/rack/server.rb:162:in `app' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/rack-1.2.1/lib/rack/server.rb:248:in `wrapped_app' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/rack-1.2.1/lib/rack/server.rb:213:in `start' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/commands/server.rb:65:in `start' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/commands.rb:30:in `block in <top (required)>' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/commands.rb:27:in `tap' 
from /Users/marshallyount/.rvm/gems/[email protected]_app/gems/railties-3.0.1/lib/rails/commands.rb:27:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

Répondre

1

J'ai trouvé une bonne réponse à cette question, grâce à this article.

je manque le tout important exige en-tête en haut de mes routes fichier:

require 'my_service.rb' 

# app names changed to protect the (not so) innocent 
MyApp::Application.routes.draw do 
    match "/service", :to => MyService 
    ... 
end