Generate war file using warbler - sinatra

I am trying to generate war file using warbler for jruby, but i got stuck and i am getting this error:
warble aborted!
NoMethodError: undefined method `booter=' for nil:NilClass
config/warble.rb:9:in `block in initialize' /Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/lib/warbler/config.rb:216:in `initialize'
config/warble.rb:4:in `<eval>'
/Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/lib/warbler/task.rb:46:in `initialize'
/Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/lib/warbler/application.rb:27:in `load_rakefile'
/Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/lib/warbler/application.rb:79:in `run'
/Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/lib/warbler/application.rb:74:in `run'
/Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/bin/warble:11:in `<top>'
/Users/xxx/.rvm/gems/jruby-9.0.5.0/bin/warble:23:in `<top>'
(See full trace by running task with --trace)
my config file in config/warble.rb:
Warbler::Config.new do |config|
config.dirs = %w(app config views)
config.gems += ["sinatra"]
config.gems -= ["rails"]
config.jar_name = "jsinatra"
config.webxml.booter = :rack
config.webxml.jruby.compat.version = "1.9"
config.webxml.rackup.path = '/WEB-INF/config.ru'
end
any help, advice apricciated. thank you.
over all, i am trying to create docker container and i am using pdf file as a reference but the pdf is somehow vaguely written.
http://www.ibm.com/developerworks/cloud/library/cl-sinatra-softlayer-app/cl-sinatra-softlayer-app-pdf.pdf

Worked for me
In the pdf I posted there is file named rackup.ru with this contents:
require "sinatra"
require File.dirname(__FILE__) + '/app/main'
run MyApp
After hours of googling, I decided to create identical file and name it config.ru. Worked.
Not working
I have also tried to change
config.webxml.rackup.path = '/WEB-INF/config.ru'
to
config.webxml.rackup.path = '/WEB-INF/rackup.ru'
Did not work.

Related

Pass test arguments via my Rake::TestTask . What am I doing wrong?

I have a Rakefile defined with code like so:
namespace :app do |args|
desc "Run App tests from lib/app_tests/test_*.rb"
Rake::TestTask.new do |t,args|
t.name = "testApp"
t.libs << 'lib/pageobjects/app_page_objects'
t.test_files = FileList['lib/app_tests/test_*.rb']
#t.options - passing on command line see below
t.verbose = true
end
...
But, when I run the task, it treats the TESTOPTS args as if they are additional tests that the test runner wants to run. What I want is for each test in t.test_files, pass the 3 arguments to each test. The main error I see is:
cannot load such file -- c:/Users/me/IdeaProjects/impl/util/PROJECT/testclient
Why is Rake treating my TESTOPTS like they are additional items in the t.test_files FileList object? With my experience with JUnit, this seems unusual to me.
And here is the console output:
$ rake app:testapp TESTOPTS="testclient impdev app"
c:/Ruby22-x64/bin/ruby.exe -I"lib;lib/pageobjects/app_page_objects" "c:/Ruby22-x64/lib/ruby/2.2.0/rake/rake_test_loader.rb" "lib/app_tests/test_1.rb" "lib/app_tests/test_2.rb" testclient impdev app
Current dir is : c:/Users/me/IdeaProjects/impl/util/PROJECT
c:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- c:/Users/me/IdeaProjects/impl/util/PROJECT/testclient (LoadError)
from c:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from c:/Ruby22-x64/lib/ruby/2.2.0/rake/rake_test_loader.rb:15:in `block in <main>'
from c:/Ruby22-x64/lib/ruby/2.2.0/rake/rake_test_loader.rb:4:in `select'
from c:/Ruby22-x64/lib/ruby/2.2.0/rake/rake_test_loader.rb:4:in `<main>'
rake aborted!
Command failed with status (1): [ruby -I"lib;lib/pageobjects/app_page_objects" "c:/Ruby22-x64/lib/ruby/2.2.0/rake/rake_test_loader.rb"
"lib/app_tests/test_browse_conditions.rb" "lib/app_tests/test_example.rb" testclient impdev app]
end
EDIT:
I created a test project on GitHub that reproduces the problem. Just download the project and run the tests with 'rake test' :
https://github.com/djangofan/RakeUnitTests/tree/5df4825d105251c81d425d3aef986e3f7d2f9f44
Also, I discovered that parallel_test (without rake) is capable of passing the test args the way that I want to, with a '-o' argument. I just wish I knew how to do it with Rake.

Strange errors in tests after updating to rspec3

After updating a project to Rspec 3, I get the following strange errors in my tests which I am not able to fix:
undefined method `empty?' for 2:Fixnum
# /opt/local/lib/ruby2.1/gems/2.1.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:251:in `block in missing_keys'
# /opt/local/lib/ruby2.1/gems/2.1.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:251:in `select'
# /opt/local/lib/ruby2.1/gems/2.1.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:251:in `missing_keys'
# /opt/local/lib/ruby2.1/gems/2.1.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:231:in `optimized_helper'
# /opt/local/lib/ruby2.1/gems/2.1.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:220:in `call'
# /opt/local/lib/ruby2.1/gems/2.1.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:345:in `block (2 levels) in define_url_helper'
# ./app/controllers/users_controller.rb:10:in `block in <class:UsersController>'
users_controller line 10 contains a redirect:
redirect_to(user_path(current_user))
In each of these cases, current_user is a mocked User object created using mock_model(User, login: User.make_token) and has the ID value quoted in the error message (before ":Fixnum").
This happens with every redirect that contains an object. Examples:
redirect_to current_user
redirect_to user_path(current_user)
redirect_to url_for([:admin, current_user, :edit])
If I use the object's ID as in redirect_to user_path(current_user.id)), the error does not occur. However, then e.g. url_for breaks as well, since I cannot use url_for([#parent.id, #object.id, :edit]) (the objects cannot be derived from their IDs only but are needed for the path).
This only happens when using mocked objects with RSpec 3 and Rails 4.2.1. Any help would be greatly appreciated since this makes a lot of tests fail right now.
Rspec 3 extracted mocks support into the rspec-activemodel-mocks gem, so you might need to add rspec-activemodel-mocks to your Gemfile in order for the route helpers to behave as expected in your specs.

FATAL -- Hostname not supplied: 'api.vcap.me/services/v1/offerings'

all
Configure the echo service in cloudfoundry, the echo_gateway output console started as follows
[2013-03-07 09:53:56.135519] echo_gateway - pid=25534 tid=a837 fid=d765
FATAL -- Hostname not supplied: 'api.vcap.me/services/v1/offerings' ruby-1.9.2-p180/lib/ruby/gems/1.9.1/ruby/1.9.1/gems/addressable-2.2.8/lib/addressable/uri.rb:2253:in `validate'|
ruby-1.9.2-p180/lib/ruby/gems/1.9.1/ruby/1.9.1/gems/addressable-2.2.8/lib/addressable/uri.rb:1193:in `port='|
ruby-1.9.2-p180/lib/ruby/gems/1.9.1/ruby/1.9.1/gems/em-http-request-1.0.0.beta.3/lib/em-http/http_options.rb:41:in `set_uri'|
ruby-1.9.2-p180/lib/ruby/gems/1.9.1/ruby/1.9.1/gems/em-http-request-1.0.0.beta.3/lib/em-http/http_options.rb:8:in `initialize'|
ruby-1.9.2-p180/lib/ruby/gems/1.9.1/ruby/1.9.1/gems/em-http-request-1.0.0.beta.3/lib/em-http/request.rb:7:in `new'|
ruby-1.9.2-p180/lib/ruby/gems/1.9.1/ruby/1.9.1/gems/em-http-request-1.0.0.beta.3/lib/em-http/request.rb:7:in `new'|
/home/zhangyunpeng/cloudfoundry/vcap/services/echo/vendor/cache/vcap-services-base-0346efd96d31/lib/base/catalog_manager_base.rb:24:in `create_http_request'|
/home/zhangyunpeng/cloudfoundry/vcap/services/echo/vendor/cache/vcap-services-base-0346efd96d31/lib/base/catalog_manager_v1.rb:130:in `advertise_service_to_cc'|
/home/zhangyunpeng/cloudfoundry/vcap/services/echo/vendor/cache/vcap-services-base-0346efd96d31/lib/base/catalog_manager_v1.rb:56:in `block (2 levels) in update_catalog'|
/home/zhangyunpeng/cloudfoundry/vcap/services/echo/vendor/cache/vcap-services-base-0346efd96d31/lib/base/catalog_manager_v1.rb:55:in `each'|
/home/zhangyunpeng/cloudfoundry/vcap/services/echo/vendor/cache/vcap-services-base-0346efd96d31/lib/base/catalog_manager_v1.rb:55:in `block in update_catalog'
In VMC, by VMC info --services, echo services option cannot be listed.
I think it is related to my Vcap environment, because of the same code, in colleagues can be.
I would recommend you to take a look at here: http://support.cloudfoundry.com/entries/20485171-How-to-Add-a-System-Service-to-OSS-Cloud-Foundry-Step-by-Step-guide.

Capybara select statement not working with Rspec

Using Capybara with Rails 3, Rspec and Cucumber,
When I use the select statement, such as
select("Unspecified", :from=> 'record_family_')
I get an error, wrong number of arguments (2 for 3). Likewise, if I omit the second argument, I get wrong number of arguments (1 for 3). This happens whether I'm using RSpec or Cucumber. If I switch to Webrat, everything works.
Details: Rails 3.0.4, rspec-core 2.5.1, rspec-rails 2.5.0, capybara 0.1.4.2, rack 1.2.1
The first few lines of the stack trace (with the path simplified) are:
wrong number of arguments (1 for 3) (ArgumentError)
actionpack-3.0.5/lib/action_view/helpers/form_options_helper.rb:131:in `select'
capybara-0.4.1.2/lib/capybara/dsl.rb:104:in `select'
step_definitions/sim_db_steps.rb:412:in `block in <top (required)>'
cucumber-0.10.0/lib/cucumber/core_ext/instance_exec.rb:48:in `instance_exec'
cucumber-0.10.0/lib/cucumber/core_ext/instance_exec.rb:48:in `block in cucumber_instance_exec'
cucumber-0.10.0/lib/cucumber/core_ext/instance_exec.rb:69:in `cucumber_run_with_backtrace_filtering'
cucumber-0.10.0/lib/cucumber/core_ext/instance_exec.rb:36:in `cucumber_instance_exec'
cucumber-0.10.0/lib/cucumber/rb_support/rb_step_definition.rb:62:in `invoke'
Any ideas?
Thanks to Jonas Niklas for pointing out the problem, a name space issue. I had indirectly included ActionView::Helpers::FormOptionsHelper into the test cases so that the ActionView select was conflicting with the Capybara one.
I had a name space issue also with select (it was using kernel instead of page.select). I ended up having to change this:
RSpec.configure do |config|
config.include Capybara::DSL
config.include ActionView::Helpers::FormOptionsHelper
end
To this:
RSpec.configure do |config|
config.include ActionView::Helpers::FormOptionsHelper
config.include Capybara::DSL
end
Just the ordering of the includes fixed it.

Problems with Rails 3 Webrick and loading video for iPhone/iPad ( mp4 m4v ) video files

I'm trying to get Rails (3.0.0) to serve a simple m4v video file for iphone in a html5 video block. For sanity's sake i'm using the big buck bunny video from http://camendesign.com/code/video_for_everybody that I know is properly encoded for iphone and works
When i run this on an apache server it runs perfectly. But on my rails dev environment it just loads a black box with a slash through it. My instinct tells me it has to be some type of mime issue.
I've tried adding these lines to my mime_types.rb file:
Mime::Type.register "video/mp4", :mp4
Mime::Type.register "video/mp4", :m4v
Rack::Mime::MIME_TYPES.merge!({
".ogg" => "application/ogg",
".ogx" => "application/ogg",
".ogv" => "video/ogg",
".oga" => "audio/ogg",
".mp4" => "video/mp4",
".m4v" => "video/mp4",
".mp3" => "audio/mpeg",
".m4a" => "audio/mpeg"
})
But no luck. Some have suggested to add this line to the mime_types file too
MIME::Type.add(MIME::Type.from_array("video/mp4", %(m4v))
But that results in this error:
NameError: uninitialized constant MIME
from (irb):4
from /Users/theshaolinmonk/.rvm/gems/ruby-1.9.2-p0#rails3/gems/railties-3.0.0/lib/rails/commands/console.rb:44:in `start'
from /Users/theshaolinmonk/.rvm/gems/ruby-1.9.2-p0#rails3/gems/railties-3.0.0/lib/rails/commands/console.rb:8:in `start'
from /Users/theshaolinmonk/.rvm/gems/ruby-1.9.2-p0#rails3/gems/railties-3.0.0/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Anyone have any idea ?
Maybe add the following line to your Gemfile?
gem 'mime-types', :require => 'mime/types'