Rails 怎么让 Rake 执行的时候不加载 Rails 的环境

lb563 · 2012年04月18日 · 最后由 ywjno 回复于 2012年04月18日 · 2806 次阅读

现在有一个 rake 用来初始数据库,并不是用 migrateiong 的方式。而是用 sql 脚本的方式来执行

  1. 新建一个数据库 例如:mysql -uroot < create_database.sql
  2. 给新建的数据库初始数据 例如:mysql -uroot dev_cms < cms.sql

我的 rake 基本就按上面的步骤来执行 但是在 rails 中好像 rake 命令会自动的加载 rails 的 enviroment.rb 环境, 而我的项目在加载 config/initialzer 这个文件时自己重新加载 model 类 (因为我在 model 中又嵌套了几层目录用于分类不自己加载的话会找不到 model), 在这些 model 类中有些类用了方法"establish_connection dev_cms" 这个方法会链接数据库 dev_cms,而当他去链接的时候数据库中并没有这个数据库, 所以会报错,找不到数据库"dev_cms"

现在我想问有没有方法让我不加载这个 rails 的环境,只执行我当前 rake?

不过不用加载 rails 环境你还用 rake 干嘛捏。 写个脚本,放 script 里

把操作 sql 脚本的处理挪到一个rb文件中(比如 sql.rb),然后在 rake 任务里面调用这个类试试?

只要在 rails 目录下 rake 就会载入环境,因为 Rakefile 有这句

require File.expand_path('../config/application', __FILE__)


用 1 楼方法。

#2 楼 @ywjno 现在的情况是我一执行 rake 他就会加载 rails 环境,而我不想加载这个环境!

如果你想要加载 rake 同时又不想加载 rails 环境,建议你把导致你出错的那些语句移到在其他的 enviroment 下执行,而 rake 默认使用的 development 环境

不加 require 'test_helper' or 'rspec_helper'

自己看 rake log:clear

#4 楼 @lb563 我用这个方法它还真就不加载 app/models 下的东西,所以我才知道好用

#8 楼 @ywjno 我在 config/initialzer 目录中加载了 model 文件,目前的情况是不太可能给去掉加载的!

#9 楼 @lb563 那就采用 1 楼的方法好了,rake 里面写system('xxx')调用脚本

需要 登录 后方可回复, 如果你还没有账号请 注册新账号