小编Jos*_*ver的帖子

针对Rails测试环境运行迁移

我知道我可以运行特定的迁移:

rake db:migrate:up VERSION=20080906120000
Run Code Online (Sandbox Code Playgroud)

但我可以针对我的测试数据库运行特定的迁移吗?以下工作会吗?

RAILS_ENV=test rake db:migrate:up VERSION=20080906120000
Run Code Online (Sandbox Code Playgroud)

理论上,在默认模式下运行迁移(应该影响开发数据库)然后运行rake db:test:prepare应该完成工作,但是在我做完测试数据库之后我发现了一些奇怪的东西,我需要在测试中运行特定的迁移数据库以帮助我排除故障.

我只是尝试上面的rake命令,除了我正在我的开发数据库上进行长数据播种运行,我不能冒着迁移干扰它的风险,所以我想我会看到是否有人知道在我自己确定之前的答案.:)

ruby-on-rails

23
推荐指数
1
解决办法
1万
查看次数

如何在MacOS X上安装g ++?

我想使用g ++编译器在MacOS X上编译C++代码.我该如何安装?

c++ macos g++

20
推荐指数
3
解决办法
13万
查看次数

是否可以将标准Ruby记录器配置为在每条消息后刷新?

::Logger每次写入后,标准Ruby记录器(即)是否可以自动刷新?

更新:我正在设置自定义日志格式化程序,根据如何在rails日志中获取ruby中的时间戳:

class Foo
  def initialize(params = {})
    @logger = Logger.new $stdout
    @logger.formatter = LogFormatter.new
    @logger.level = params.include?(:log) ? params[:log] : Logger::INFO
    # ...
  end

  class LogFormatter < Logger::Formatter
    def call(severity, time, progname, message)
      timestamp = time.iso8601
      log_msg = "#{timestamp}#{" [#{severity}]" if %w{ERROR WARN}.include? severity} "
      if message.is_a? Exception
        log_msg += "#{message.message}"
        log_msg += ": #{message.backtrace.join "\n#{timestamp}  "}" unless message.backtrace.blank?
      else
        log_msg += message
      end

      "#{log_msg}\n"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我尝试使用来自idlefingers的建议如下:

  def initialize(params = {}) …
Run Code Online (Sandbox Code Playgroud)

ruby

18
推荐指数
1
解决办法
1万
查看次数

什么是"foo = bar || baz"的惯用语?

我想提供一个可以覆盖的默认值.我知道我可以使用三元组,如下所示:

(def foo (if (not (nil? bar)) bar baz))
Run Code Online (Sandbox Code Playgroud)

但是肯定在Clojure中有一种更惯用的方式来说"使用吧,或者如果bar是零则为baz.

有什么建议?

idioms clojure

18
推荐指数
1
解决办法
3541
查看次数

Eclipse的Refactor> Move可以与Git集成吗?

使用IDE for Java的一个好处就是自动重构.我遇到的问题是,在使用Refactor> Move将类移动到另一个包(在文件系统中移动文件本身)之后,git status显示旧位置的文件已被删除,而新文件中的文件已被删除位置已添加.

我发现的解决方法很笨重:

mv src/com/example/newpackage/Foo.java src/com/example/oldpackage/Foo.java
git mv src/com/example/oldpackage/Foo.java src/com/example/newpackage/Foo.java
Run Code Online (Sandbox Code Playgroud)

有没有办法(当使用Eclipse的Git插件时)让重构做一个git mv而不是一个天真的文件系统移动?

java eclipse git

17
推荐指数
1
解决办法
4036
查看次数

如何在Ruby中检测字符串中的某些Unicode字符?

给定Ruby 1.8.7中的字符串(没有支持带有\ p {}的Unicode属性的真棒Oniguruma正则表达式引擎),我希望能够确定该字符串是否包含一个或多个中文,日文或韩文字符; 即

class String
  def contains_cjk?
    ...
  end
end

>> '???'.contains_cjk?
=> true
>> '?? ????'.contains_cjk?
=> true
>> '????????'.contains_cjk?
=> true
>> 'Watashi ha bakana gaijin desu.'.contains_cjk?
=> false
Run Code Online (Sandbox Code Playgroud)

我怀疑这将归结为查看字符串中的任何字符是否在Unihan CJKV Unicode块中,但我认为值得问一下是否有人知道Ruby中的现有解决方案.

ruby unicode encoding character-encoding cjk

16
推荐指数
2
解决办法
5221
查看次数

如何关闭终端中的回声?

我正在编写一个Bourne shell脚本,并且输入密码如下:

echo -n 'Password: '
read password
Run Code Online (Sandbox Code Playgroud)

显然,我不希望密码被回显到终端,所以我想在读取期间关闭回声.我知道有办法解决这个问题stty,但是当我阅读联机帮助页时,我会问社区的好处.;)

unix terminal sh

15
推荐指数
3
解决办法
5万
查看次数

我使用C++标准库的查找有什么问题?

我正在尝试使用C++标准库的find算法,如下所示:

  template<class T>
  const unsigned int AdjacencyList<T>::_index_for_node(
      const std::vector<T>& list, const T& node
  ) throw(NoSuchNodeException)
  {
    std::vector<T>::iterator iter = std::find(list.begin(), list.end(), node);
  }
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我得到以下错误:

In file included from ../AdjacencyList.cpp:8:
../AdjacencyList.h: In member function ‘const unsigned int Graph::AdjacencyList<T>::_index_for_node(const std::vector<T, std::allocator<_Tp1> >&, const T&)’:
../AdjacencyList.h:99: error: expected ‘;’ before ‘iter’
../AdjacencyList.h:100: error: ‘iter’ was not declared in this scope
In file included from ../AdjacencyListTest.cpp:9:
../AdjacencyList.h: In member function ‘const unsigned int Graph::AdjacencyList<T>::_index_for_node(const std::vector<T, std::allocator<_Tp1> >&, const T&)’:
../AdjacencyList.h:99: error: expected …
Run Code Online (Sandbox Code Playgroud)

c++ templates typename c++-standard-library

15
推荐指数
1
解决办法
1万
查看次数

为什么在Eclipse中为EGit管理的项目禁用合并工具?

根据EGit用户指南,要使用合并工具,应右键单击具有合并冲突的资源,然后选择Team > Merge Tool.但是,当我这样做时,"合并工具"选项显示为灰色.EGit正在检测冲突并向我展示冲突文件的图标和文本标签装饰.

有任何想法吗?

eclipse git egit

14
推荐指数
1
解决办法
1万
查看次数

在C++中初始化char*的不推荐方法是什么?

当我char *在C++中初始化这样的局部变量时:

char * pattern = "oggS";
Run Code Online (Sandbox Code Playgroud)

编译器警告我:

Foo.cpp:34: warning: deprecated conversion from string constant to ‘char*’
Run Code Online (Sandbox Code Playgroud)

在C++中执行此操作的不推荐方法是什么?

如果它很重要,这就是我如何调用编译器(来自Eclipse):

g++-4.5 -O0 -g3 -Wall -std=c++0x -c -fmessage-length=0 -MMD -MP -MF"Foo.d" -MT"Foo.d" -o"Foo.o" "Foo.cpp"
Run Code Online (Sandbox Code Playgroud)

c++

13
推荐指数
1
解决办法
1022
查看次数