Skip to content

Instantly share code, notes, and snippets.

@jaigouk
Created January 8, 2009 23:12
Show Gist options
  • Save jaigouk/44941 to your computer and use it in GitHub Desktop.
Save jaigouk/44941 to your computer and use it in GitHub Desktop.
(merb 1.0.7.1)
The 'merb-cache' causes problem. If I delete the cache block, "rake db:automigrae" runs well.
I can not use cache on flat app?
I referenced 3 resources. 2 for init.rb and 1 for dm-do error. I followed instructions that Matt recommended.
But I did not bundled. It only caused more complex errors with twitter API.
My git repo is git://github.com/jaigouk/twitter-on-merb.git
(Current status: without bundling and caching, it runs well)
http://merb.lighthouseapp.com/projects/7433/tickets/618-rake-dbautomigrate-loads-initrb-twice
http://groups.google.com/group/merb/browse_thread/thread/3016d380bde5d60e/fb2c7ab24ef40c52?lnk=gst&q=load+init+twice#fb2c7ab24ef40c52
http://groups.google.co.kr/group/merb/browse_thread/thread/f1bd76a125ed4c6b?hl=en&ie=UTF-8&q=The+problem+is+that+some+DM%2FDO+dependencies&pli=1
$merb-gen flat myapp
$nano config/init.rb
------------------------
...
merb_gems_version = "1.0.7.1"
dm_gems_version = "0.9.9"
dependency "merb-action-args", merb_gems_version
dependency "merb-assets", merb_gems_version
dependency "merb-helpers", merb_gems_version
dependency "merb_datamapper", merb_gems_version
dependency "dm-core", dm_gems_version
dependency "dm-aggregates", dm_gems_version
dependency "dm-migrations", dm_gems_version
dependency "dm-timestamps", dm_gems_version
dependency "dm-types", dm_gems_version
dependency "dm-validations", dm_gems_version
dependency "do_sqlite3", "0.9.10.1"
dependency 'merb-cache', merb_gems_version do
Merb::Cache.setup do
register(:twitter_fragment_store, Merb::Cache::FileStore, :dir => Merb.root / 'cache' / 'fragments')
register(:twitter_page_store, Merb::Cache::PageStore[Merb::Cache::FileStore], :dir => Merb.root / 'public' / 'page_cache')
register(:default, Merb::Cache::AdhocStore[:twitter_page_store, :twitter_fragment_store])
end
end
...
------------------
The 'merb-cache' causes problem. If I delete the cache block, "rake db:automigrae" runs well.
I can not use cache on flat app?
$rake merb_env
[jaigouk@j-laptop flattest]$ rake merb_env --trace
(in /home/jaigouk/down/flattest)
Loading init file from /home/jaigouk/down/flattest/config/init.rb
** Invoke merb_env (first_time)
** Execute merb_env
Loading init file from /home/jaigouk/down/flattest/config/init.rb
rake aborted!
twitter_fragment_store store already setup
/usr/lib/ruby/gems/1.8/gems/merb-cache-1.0.7.1/lib/merb-cache/cache.rb:66:in `register'
/home/jaigouk/down/flattest/config/init.rb:13
/usr/lib/ruby/gems/1.8/gems/merb-cache-1.0.7.1/lib/merb-cache/cache.rb:14:in `instance_eval'
/usr/lib/ruby/gems/1.8/gems/merb-cache-1.0.7.1/lib/merb-cache/cache.rb:14:in `setup'
/usr/lib/ruby/gems/1.8/gems/merb-core-1.0.7.1/lib/merb-core/bootloader.rb:583:in `call'
/usr/lib/ruby/gems/1.8/gems/merb-core-1.0.7.1/lib/merb-core/bootloader.rb:583:in `run'
/usr/lib/ruby/gems/1.8/gems/merb-core-1.0.7.1/lib/merb-core/bootloader.rb:583:in `each'
/usr/lib/ruby/gems/1.8/gems/merb-core-1.0.7.1/lib/merb-core/bootloader.rb:583:in `run'
/usr/lib/ruby/gems/1.8/gems/merb-core-1.0.7.1/lib/merb-core/bootloader.rb:99:in `run'
/usr/lib/ruby/gems/1.8/gems/merb-core-1.0.7.1/lib/merb-core/server.rb:172:in `bootup'
/usr/lib/ruby/gems/1.8/gems/merb-core-1.0.7.1/lib/merb-core/server.rb:42:in `start'
/usr/lib/ruby/gems/1.8/gems/merb-core-1.0.7.1/lib/merb-core.rb:170:in `start'
/usr/lib/ruby/gems/1.8/gems/merb-core-1.0.7.1/lib/merb-core.rb:183:in `start_environment'
/home/jaigouk/down/flattest/Rakefile:24
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:578:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:571:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:564:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2019:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1991:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1970:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1967:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19
# If I comment "Merb.load_dependencies(:environment => init_env)",
# It shows original minimum rake tasks. rake audit, default, merb_env, and spec related ones.
# and rake merb_env runs without errors.
#
# If I uncomment the line as bellow,
# rake -T shows all rake tasks include rake db:automigrate, but the errors above occur.
# I want to make a model for this small app.
# How can I run "rake db:automigrate"?
#---------------------------------------------------------------------------------------------
# Rakefile
require 'rubygems'
require 'rake/rdoctask'
require 'merb-core'
require 'merb-core/tasks/merb'
include FileUtils
init_env = ENV['MERB_ENV'] || 'rake'
Merb.load_dependencies(:environment => init_env)
# Get Merb plugins and dependencies
Merb::Plugins.rakefiles.each { |r| require r }
# Load any app level custom rakefile extensions from lib/tasks
tasks_path = File.join(File.dirname(__FILE__), "lib", "tasks")
rake_files = Dir["#{tasks_path}/*.rake"]
rake_files.each{|rake_file| load rake_file }
desc "Start runner environment"
task :merb_env do
Merb.start_environment(:environment => init_env, :adapter => 'runner')
end
require 'spec/rake/spectask'
require 'merb-core/test/tasks/spectasks'
desc 'Default: run spec examples'
task :default => 'spec'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment