class Object
Constants
- AR
- AR_CHANGE_MG
- AR_MIGRATION
- AR_MODEL
- AR_MODEL_DOWN_MG
- AR_MODEL_UP_MG
- BACON_CONTROLLER_TEST
- BACON_HELPER_TEST
- BACON_MODEL_TEST
- BACON_RAKE
- BACON_SETUP
- COMPASS_INIT
- COMPASS_REGISTER
- CONNECTION_POOL_MIDDLEWARE
- COUCHREST
- CR_MODEL
- CUCUMBER_FEATURE
- CUCUMBER_SETUP
- CUCUMBER_STEP
- CUCUMBER_URL
- CUCUMBER_YML
- DM
- DM_CHANGE_MG
- DM_MIGRATION
- DM_MODEL
- DM_MODEL_DOWN_MG
- DM_MODEL_UP_MG
- DYNAMOID
- DYNAMOID_MODEL
- LESS_INIT
- MINITEST_CONTROLLER_TEST
- MINITEST_HELPER_TEST
- MINITEST_MODEL_TEST
- MINITEST_RAKE
- MINITEST_SETUP
- MM_MODEL
- MONGO
- MONGOID
- MONGOID3
- MONGOID_MODEL
- MONGOMATIC
- MONGOMATIC_MODEL
- MR
- MR_MODEL
- MYSQL
- MYSQL2
- OHM
- OHM_MODEL
- POSTGRES
- RACK_ENV
Defines our constants
- RIOT_CONTROLLER_TEST
- RIOT_HELPER_TEST
- RIOT_MODEL_TEST
- RIOT_RAKE
- RIOT_SETUP
- RIPPLE_CFG
- RIPPLE_DB
- RIPPLE_MODEL
- RSPEC_CONTROLLER_TEST
- RSPEC_HELPER_TEST
- RSPEC_MODEL_TEST
- RSPEC_RAKE
- RSPEC_SETUP
- SASS_INIT
- SCSS_INIT
- SEQUEL
- SHOULDA_CONTROLLER_TEST
- SHOULDA_HELPER_TEST
- SHOULDA_MODEL_TEST
- SHOULDA_RAKE
- SHOULDA_SETUP
- SQLITE
- SQ_CHANGE_MG
- SQ_MIGRATION
- SQ_MODEL
- SQ_MODEL_DOWN_MG
- SQ_MODEL_UP_MG
- STEAK_CONTROLLER_ACCEPTANCE_TEST
- STEAK_CONTROLLER_TEST
- STEAK_HELPER_TEST
- STEAK_MODEL_TEST
- STEAK_RAKE
- STEAK_SETUP
- TENNPIPES_ROOT
Public Instance Methods
catch_error(type, error, config)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/activerecord.rb, line 340 def catch_error(type, error, config) $stderr.puts *(error.backtrace) $stderr.puts error.inspect case type when :create $stderr.puts "Couldn't create database for #{config.inspect}" when :drop $stderr.puts "Couldn't drop #{config[:database]}" end end
collection_names()
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/mongoid.rb, line 108 def collection_names @collection_names ||= get_mongoid_models.map{ |d| d.collection.name }.uniq end
convert_ids(obj)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/mongoid.rb, line 92 def convert_ids(obj) if obj.is_a?(String) && obj =~ /^[a-f0-9]{24}$/ defined?(Moped) ? Moped::BSON::ObjectId.from_string(obj) : BSON::ObjectId(obj) elsif obj.is_a?(Array) obj.map do |v| convert_ids(v) end elsif obj.is_a?(Hash) obj.each do |k, v| obj[k] = convert_ids(v) end else obj end end
create_database(config)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/activerecord.rb, line 39 def create_database(config) begin if config[:adapter] =~ /sqlite/ if File.exist?(config[:database]) $stderr.puts "#{config[:database]} already exists" else begin # Create the SQLite database Dir.mkdir File.dirname(config[:database]) unless File.exist?(File.dirname(config[:database])) ActiveRecord::Base.establish_connection(config) ActiveRecord::Base.connection rescue StandardError => e catch_error(:create, e, config) end end return # Skip the else clause of begin/rescue else ActiveRecord::Base.establish_connection(config) ActiveRecord::Base.connection end rescue case config[:adapter] when 'mysql', 'mysql2', 'em_mysql2', 'jdbcmysql' @charset = ENV['CHARSET'] || 'utf8' @collation = ENV['COLLATION'] || 'utf8_unicode_ci' creation_options = {:charset => (config[:charset] || @charset), :collation => (config[:collation] || @collation)} begin ActiveRecord::Base.establish_connection(config.merge(:database => nil)) ActiveRecord::Base.connection.create_database(config[:database], creation_options) ActiveRecord::Base.establish_connection(config) rescue StandardError => e $stderr.puts *(e.backtrace) $stderr.puts e.inspect $stderr.puts "Couldn't create database for #{config.inspect}, charset: #{config[:charset] || @charset}, collation: #{config[:collation] || @collation}" $stderr.puts "(if you set the charset manually, make sure you have a matching collation)" if config[:charset] end when 'postgresql' @encoding = config[:encoding] || ENV['CHARSET'] || 'utf8' begin ActiveRecord::Base.establish_connection(config.merge(:database => 'postgres', :schema_search_path => 'public')) ActiveRecord::Base.connection.create_database(config[:database], config.merge(:encoding => @encoding)) ActiveRecord::Base.establish_connection(config) rescue StandardError => e catch_error(:create, e, config) end end else $stderr.puts "#{config[:database]} already exists" end end
create_migration_file(migration_name, name, columns)
click to toggle source
# File lib/tennpipes-init/generators/components/orms/activerecord.rb, line 194 def create_migration_file(migration_name, name, columns) output_migration_file(migration_name, name, columns, :base => AR_MIGRATION, :change_format => AR_CHANGE_MG, :add => Proc.new { |field, kind| "t.#{kind.underscore.gsub(/_/, '')} :#{field}" }, :remove => Proc.new { |field, kind| "t.remove :#{field}" } ) end
create_model_file(name, options={})
click to toggle source
options => { :fields => [“title:string”, “body:string”], :app => 'app' }
# File lib/tennpipes-init/generators/components/orms/activerecord.rb, line 149 def create_model_file(name, options={}) model_path = destination_root(options[:app], 'models', "#{name.to_s.underscore}.rb") model_contents = AR_MODEL.sub(/!NAME!/, name.to_s.underscore.camelize) create_file(model_path, model_contents,:skip => true) end
create_model_migration(migration_name, name, columns)
click to toggle source
# File lib/tennpipes-init/generators/components/orms/activerecord.rb, line 179 def create_model_migration(migration_name, name, columns) output_model_migration(migration_name, name, columns, :base => AR_MIGRATION, :column_format => Proc.new { |field, kind| "t.#{kind.underscore.gsub(/_/, '')} :#{field}" }, :up => AR_MODEL_UP_MG, :down => AR_MODEL_DOWN_MG ) end
drop_database(config)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/activerecord.rb, line 314 def drop_database(config) case config[:adapter] when 'mysql', 'mysql2', 'em_mysql2', 'jdbcmysql' ActiveRecord::Base.establish_connection(config) ActiveRecord::Base.connection.drop_database config[:database] when /^sqlite/ require 'pathname' path = Pathname.new(config[:database]) file = path.absolute? ? path.to_s : Tennpipes.root(path) FileUtils.rm(file) when 'postgresql' ActiveRecord::Base.establish_connection(config.merge(:database => 'postgres', :schema_search_path => 'public')) ActiveRecord::Base.connection.drop_database config[:database] end end
dump_schema()
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/activerecord.rb, line 364 def dump_schema Rake::Task["ar:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby end
enum_mongoid_documents(collection) { |doc| ... }
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/mongoid.rb, line 20 def enum_mongoid_documents(collection) collection.find({}, :timeout => false, :sort => "_id") do |cursor| cursor.each do |doc| yield doc end end end
firebird_db_string(config)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/activerecord.rb, line 336 def firebird_db_string(config) FireRuby::Database.db_string_for(config.symbolize_keys) end
generate_controller_test(name, path)
click to toggle source
# File lib/tennpipes-init/generators/components/tests/bacon.rb, line 85 def generate_controller_test(name, path) bacon_contents = BACON_CONTROLLER_TEST.gsub(/!PATH!/, path).gsub(/!EXPANDED_PATH!/, path.gsub(/:\w+?_id/, "1")) controller_test_path = File.join('test',options[:app],'controllers',"#{name.to_s.underscore}_controller_test.rb") create_file destination_root(controller_test_path), bacon_contents, :skip => true end
generate_helper_test(name, project_name, app_name)
click to toggle source
# File lib/tennpipes-init/generators/components/tests/bacon.rb, line 98 def generate_helper_test(name, project_name, app_name) bacon_contents = BACON_HELPER_TEST.gsub(/!NAME!/, "#{project_name}::#{app_name}::#{name}") bacon_contents.gsub!(/!PATH!/, recognize_path) helper_spec_path = File.join('test', options[:app], 'helpers', "#{name.underscore}_test.rb") create_file destination_root(helper_spec_path), bacon_contents, :skip => true end
generate_model_test(name)
click to toggle source
# File lib/tennpipes-init/generators/components/tests/bacon.rb, line 91 def generate_model_test(name) bacon_contents = BACON_MODEL_TEST.gsub(/!NAME!/, name.to_s.underscore.camelize).gsub(/!DNAME!/, name.to_s.underscore) bacon_contents.gsub!(/!PATH!/, recognize_path) model_test_path = File.join('test',options[:app],'models',"#{name.to_s.underscore}_test.rb") create_file destination_root(model_test_path), bacon_contents, :skip => true end
get_mongoid_models()
click to toggle source
Helper to retrieve a list of models.
# File lib/tennpipes-init/tennpipes-tasks/mongoid.rb, line 68 def get_mongoid_models documents = [] Dir['{app,.}/models/**/*.rb'].sort.each do |file| model_path = file[0..-4].split('/')[2..-1] begin klass = model_path.map(&:classify).join('::').constantize if klass.ancestors.include?(Mongoid::Document) && !klass.embedded documents << klass end rescue => e # Just for non-mongoid objects that don't have the embedded # attribute at the class level. end end documents end
local_database?(config) { || ... }
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/activerecord.rb, line 116 def local_database?(config, &block) if %w( 127.0.0.1 localhost ).include?(config[:host]) || config[:host].blank? yield else puts "This task only modifies local databases. #{config[:database]} is on a remote host." end end
migrate_as(type)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/activerecord.rb, line 351 def migrate_as(type) version = env_migration_version fail "MIGRATION_VERSION is required" unless version ActiveRecord::Migrator.run(type, "db/migrate/", version) dump_schema end
mongoid_collection(name)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/mongoid.rb, line 12 def mongoid_collection(name) Mongoid.master.collection(name) end
mongoid_collections()
click to toggle source
Mongoid 2 API
# File lib/tennpipes-init/tennpipes-tasks/mongoid.rb, line 8 def mongoid_collections Mongoid.master.collections end
mongoid_new_collection(collection, name)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/mongoid.rb, line 16 def mongoid_new_collection(collection, name) collection.db.collection(name) end
move_as(type)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/activerecord.rb, line 358 def move_as(type) step = ENV['STEP'] ? ENV['STEP'].to_i : 1 ActiveRecord::Migrator.send(type, 'db/migrate/', step) dump_schema end
rename_mongoid_collection(collection, new_name)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/mongoid.rb, line 28 def rename_mongoid_collection(collection, new_name) collection.rename(new_name) end
resolve_structure_sql()
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/activerecord.rb, line 368 def resolve_structure_sql "#{Tennpipes.root}/db/#{Tennpipes.env}_structure.sql" end
set_firebird_env(config)
click to toggle source
# File lib/tennpipes-init/tennpipes-tasks/activerecord.rb, line 331 def set_firebird_env(config) ENV["ISC_USER"] = config[:username].to_s if config[:username] ENV["ISC_PASSWORD"] = config[:password].to_s if config[:password] end
setup_mock()
click to toggle source
# File lib/tennpipes-init/generators/components/mocks/mocha.rb, line 1 def setup_mock require_dependencies 'mocha', :group => 'test', :require => false case options[:test].to_s when 'rspec' inject_into_file 'spec/spec_helper.rb', " conf.mock_with :mocha\n", :after => "RSpec.configure do |conf|\n" else inject_into_file 'test/test_config.rb', "require 'mocha/api'", :after => "require File.expand_path(File.dirname(__FILE__) + \"/../config/boot\")\n" insert_mocking_include "Mocha::API" end end
setup_orm()
click to toggle source
# File lib/tennpipes-init/generators/components/orms/activerecord.rb, line 111 def setup_orm ar = AR db = @project_name.underscore # We're now defaulting to mysql2 since mysql is deprecated case options[:adapter] when 'mysql-gem' ar.sub! /!DB_DEVELOPMENT!/, MYSQL.sub(/!DB_NAME!/,"'#{db}_development'") ar.sub! /!DB_PRODUCTION!/, MYSQL.sub(/!DB_NAME!/,"'#{db}_production'") ar.sub! /!DB_TEST!/, MYSQL.sub(/!DB_NAME!/,"'#{db}_test'") require_dependencies 'mysql', :version => "~> 2.8.1" when 'mysql', 'mysql2' ar.sub! /!DB_DEVELOPMENT!/, MYSQL2.sub(/!DB_NAME!/,"'#{db}_development'") ar.sub! /!DB_PRODUCTION!/, MYSQL2.sub(/!DB_NAME!/,"'#{db}_production'") ar.sub! /!DB_TEST!/, MYSQL2.sub(/!DB_NAME!/,"'#{db}_test'") require_dependencies 'mysql2' when 'postgres' ar.sub! /!DB_DEVELOPMENT!/, POSTGRES.sub(/!DB_NAME!/,"'#{db}_development'") ar.sub! /!DB_PRODUCTION!/, POSTGRES.sub(/!DB_NAME!/,"'#{db}_production'") ar.sub! /!DB_TEST!/, POSTGRES.sub(/!DB_NAME!/,"'#{db}_test'") require_dependencies 'pg' else ar.sub! /!DB_DEVELOPMENT!/, SQLITE.sub(/!DB_NAME!/,"Tennpipes.root('db', '#{db}_development.db')") ar.sub! /!DB_PRODUCTION!/, SQLITE.sub(/!DB_NAME!/,"Tennpipes.root('db', '#{db}_production.db')") ar.sub! /!DB_TEST!/, SQLITE.sub(/!DB_NAME!/,"Tennpipes.root('db', '#{db}_test.db')") require_dependencies 'sqlite3' end require_dependencies 'activerecord', :require => 'active_record', :version => ">= 3.1" create_file("config/database.rb", ar) middleware :connection_pool_management, CONNECTION_POOL_MIDDLEWARE end
setup_renderer()
click to toggle source
# File lib/tennpipes-init/generators/components/renderers/erb.rb, line 1 def setup_renderer require_dependencies 'erubis', :version => "~> 2.7.0" end
setup_script()
click to toggle source
# File lib/tennpipes-init/generators/components/scripts/dojo.rb, line 1 def setup_script begin get('https://raw.github.com/tennpipes/tennpipes-static/master/js/dojo.js', destination_root("/public/javascripts/dojo.js")) get('https://raw.github.com/tennpipes/tennpipes-static/master/ujs/dojo.js', destination_root("/public/javascripts/dojo-ujs.js")) rescue copy_file('templates/static/js/dojo.js', destination_root("/public/javascripts/dojo.js")) copy_file('templates/static/ujs/dojo.js', destination_root("/public/javascripts/dojo-ujs.js")) end create_file(destination_root('/public/javascripts/application.js'), "// Put your application scripts here") end
setup_stylesheet()
click to toggle source
# File lib/tennpipes-init/generators/components/stylesheets/compass.rb, line 33 def setup_stylesheet require_dependencies 'compass' create_file destination_root('/lib/compass_plugin.rb'), COMPASS_INIT inject_into_file destination_root('/app/app.rb'), COMPASS_REGISTER, :after => "register Tennpipes::Helpers\n" directory "components/stylesheets/compass/", destination_root('/app/stylesheets') end
setup_test()
click to toggle source
# File lib/tennpipes-init/generators/components/tests/bacon.rb, line 78 def setup_test require_dependencies 'rack-test', :require => 'rack/test', :group => 'test' require_dependencies 'bacon', :group => 'test' insert_test_suite_setup BACON_SETUP, :path => 'test/test_config.rb' create_file destination_root("test/test.rake"), BACON_RAKE end