我使用以下命令备份我的生产数据库:
mysqldump -u root --opt --skip-extended-insert --databases my_production_db
Run Code Online (Sandbox Code Playgroud)
生成的转储文件在顶部附近有以下行:
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `my_production_db `;
Run Code Online (Sandbox Code Playgroud)
为了将数据库恢复到不同的目的地,即.my_debvelopment_db我必须打开转储文件并编辑数据库命名的位.
然后我跑:
mysql -u root -p <password> < mydumpfile
Run Code Online (Sandbox Code Playgroud)
我还没想出另一种方法.
随着数据库变大,这变得不切实际.
我错过了什么吗?不能我以某种方式指定我想要恢复数据库的位置?我需要一个不同的备份命令吗?
在升级到ruby 1.9.3之后,我的一个应用程序工作正常,但是当我尝试使用capistrano进行部署时,我尝试转换的第二个应用程序在"assets:precompile"阶段失败.这是堆栈跟踪:
rake aborted!
rake aborted!
invalid byte sequence in US-ASCII
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/trace_output.rb:16:in `block in trace_on'
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/trace_output.rb:14:in `map'
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/trace_output.rb:14:in `trace_on'
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:328:in `trace'
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:183:in `display_error_message'
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:169:in `rescue in standard_exception_handling'
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:159:in `standard_exception_handling'
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:88:in `load_rakefile'
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:72:in `block in run'
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling'
/Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:70:in `run'
/Users/george/.rvm/gems/ruby-1.9.3-p392@rails3211/bin/ruby_noexec_wrapper:14:in `eval'
/Users/george/.rvm/gems/ruby-1.9.3-p392@rails3211/bin/ruby_noexec_wrapper:14:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多帖子并尝试了几个建议,但无济于事.我尝试将以下内容添加到我的gemfile顶部:
if RUBY_VERSION =~ /1.9/
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
end
Run Code Online (Sandbox Code Playgroud)
但它没有任何区别.
我检查了LANG和LC_ALL环境变量,如下所示
$ echo $LC_ALL
en_NZ.UTF-8
$ echo $LANG
en_NZ.UTF-8
Run Code Online (Sandbox Code Playgroud)
我恐怕我根本不理解这个消息,我不知道如何识别有问题的文件.
我不能运行任何rake任务 - 它给出了同样的错误.
请注意,我可以在开发模式下完美地运行应用程序.
我收到了错误
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/george/.gradle/caches/artifacts-26/filestore/org.apache.logging.log4j/log4j-slf4j-impl/2.0-beta8/jar/15984318e95b9b0394e979e413a4a14f322401c1/log4j-slf4j-impl-2.0-beta8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/george/.gradle/caches/artifacts-26/filestore/org.slf4j/slf4j-log4j12/1.5.0/jar/aad1074d37a63f19fafedd272dc7830f0f41a977/slf4j-log4j12-1.5.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Run Code Online (Sandbox Code Playgroud)
在我的build.gradle文件中,我有以下行包含jar log4j-slf4j-impl-2.0-beta8.jar(我想绑定到LOG4J2)
compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.0-beta8'
Run Code Online (Sandbox Code Playgroud)
在依赖项目中的另一个build.gradle文件中,我有多行类似于以下内容:
compile 'dcm4che:dcm4che-core:2.0.23'
Run Code Online (Sandbox Code Playgroud)
现在dcm4che包含对log4j版本1(slf4j-log4j12)的依赖,因此它包含在整个项目中.
以下是Gradle依赖关系树的片段:
| +--- dcm4che:dcm4che-core:2.0.23
| | \--- org.slf4j:slf4j-log4j12:1.5.0
| | +--- org.slf4j:slf4j-api:1.5.0 -> 1.7.5
| | \--- log4j:log4j:1.2.13 -> 1.2.14
Run Code Online (Sandbox Code Playgroud)
我已经阅读了警告中建议的链接 ,但我无法弄清楚如何使用我想要的jar将我的应用程序绑定到log4j2.关于依赖管理的Gradle文档并没有真正使它更清楚.
我已升级到Capistrano 3并在新服务器上成功部署了多个Rails应用程序.
以前使用Capistrano 2部署Rails日志神奇地去了/myapp/shared/log/production.log
通过我的Cap3部署,日志位于app文件夹myapp/current/log/production.log中
这是故意还是我错过了设置?是否有一些特殊的方式来设置它们,以便他们去/共享/日志?
我想用Rails.root替换已弃用的RAILS_ROOT,作为使应用程序准备好升级到Rails 3的过程的一部分.该应用程序当前运行的版本为2.3.14,最初是在1.2中创建的
在我的boot.rb文件的开头是行:
RAILS_ROOT ="#{File.dirname(FILE)}/.."除非定义?(RAILS_ROOT)
我不能在这里替换Rails.root,因为Rails是未定义的.
设置Rails.root的推荐方法是什么?
我不认为我提出的问题很清楚.
但我不知道如何在启动时设置Rails.root.我目前似乎被设置在boot.rb顶部的行:
RAILS_ROOT ="#{File.dirname(FILE)}/.."除非定义?(RAILS_ROOT)
我只能更改该行以使用Rails.root,因为我将得到错误:
../config/boot.rb:3:未初始化的常量Rails(NameError)
谢谢乔治
我可以用两种不同的方式运行查询来返回一个Relation.
当我询问Relation的大小时,一个查询按预期给出一个Fixnum,另一个给出一个Hash,它是Relations Group By语句中每个值的哈希值,每个值的出现次数.
在Rails 3中,我认为它总是返回一个Fixnum,因为我从来没有遇到过Rails 4的问题,它有时会返回一个Hash和一个像Rel.size.zero这样的语句?给出错误:
未定义的方法`零?' for {}:Hash
我最好只使用.blank吗?检查零记录以确保避免意外错误的方法?
这是一段代码,包含两个查询和生成的日志的looging语句
码:
assessment_responses1=AssessmentResponse.select("process").where("client_id=? and final = ?",self.id,false).group("process")
logger.info("-----------------------------------------------------------")
logger.info("assessment_responses1.class = #{assessment_responses1.class}")
logger.info("assessment_responses1.size.class = #{assessment_responses1.size.class}")
logger.info("assessment_responses1.size value = #{assessment_responses1.size}")
logger.info("............................................................")
assessment_responses2=AssessmentResponse.select("distinct process").where("client_id=? and final = ?",self.id,false)
logger.info("assessment_responses2.class = #{assessment_responses2.class}")
logger.info("assessment_responses2.size.class = #{assessment_responses2.size.class}")
logger.info("assessment_responses2.size values = #{assessment_responses2.size}")
logger.info("-----------------------------------------------------------")
Run Code Online (Sandbox Code Playgroud)
LOG
-----------------------------------------------------------
assessment_responses1.class = ActiveRecord::Relation::ActiveRecord_Relation_AssessmentResponse
(0.5ms) SELECT COUNT(`assessment_responses`.`process`) AS count_process, process AS process FROM `assessment_responses` WHERE `assessment_responses`.`organisation_id` = 17 AND (client_id=43932 and final = 0) GROUP BY process
assessment_responses1.size.class = Hash
CACHE (0.0ms) …Run Code Online (Sandbox Code Playgroud) 我在山狮的干净安装上设置了RVM,Rails等.我遵循指南" 如何在Snow Leopard,Lion和Mountain Lion上安装Xcode,Homebrew,Git,RVM和Ruby 1.9.3 ".
用Ruby(1.9.3)安装RVM之后我做了一个rvm requirement看起来我应该使用Homebrew安装apple-gcc42:
Homebrew:
If you are using Homebrew, you can install the apple-gcc42 and required libraries from homebrew/dupes:
brew update
brew tap homebrew/dupes
brew install autoconf automake apple-gcc42
rvm pkg install openssl
Run Code Online (Sandbox Code Playgroud)
当我进入OpenSSL包安装时,我收到以下错误,不知道如何继续:
marvin:~ george$ rvm --skip-autoreconf pkg install openssl
Fetching openssl-1.0.1c.tar.gz to /Users/george/.rvm/archives
######################################################################## 100.0%
Downloaded archive checksum did not match, archive was removed!
If you wish to continue with not matching download add '--verify-downloads 2' after the command.
Please note …Run Code Online (Sandbox Code Playgroud) 我的终端宝石环境与我的Rubymine环境不匹配.在终端,它给出:
- EXECUTABLE DIRECTORY: /Users/george/.gem/ruby/1.9.3/bin
- SPEC CACHE DIRECTORY: /Users/george/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-12
- GEM PATHS:
- /Users/george/.gem/ruby/1.9.3
- /Users/george/.rubies/ruby-1.9.3-p392/lib/ruby/gems/1.9.1
Run Code Online (Sandbox Code Playgroud)
而在RubyMine中它给出:
EXECUTABLE DIRECTORY: /Users/george/.rubies/ruby-1.9.3-p392/bin
SPEC CACHE DIRECTORY: /Users/george/.gem/specs
RUBYGEMS PLATFORMS:
ruby
x86_64-darwin-12
GEM PATHS:
/Users/george/.rubies/ruby-1.9.3-p392/lib/ruby/gems/1.9.1
/Users/george/.gem/ruby/1.9.1
Run Code Online (Sandbox Code Playgroud)
似乎有关于宝石位置的混淆,我不知道如何解决它.
我使用chruby来控制使用ruby-build安装的ruby版本该应用程序是Rails 3.2.17
终端和Rubymine的完整输出如下:
终奌站:
RubyGems Environment:
- RUBYGEMS VERSION: 2.2.2
- RUBY VERSION: 1.9.3 (2013-02-22 patchlevel 392) [x86_64-darwin12.5.0]
- INSTALLATION DIRECTORY: /Users/george/.gem/ruby/1.9.3
- RUBY EXECUTABLE: /Users/george/.rubies/ruby-1.9.3-p392/bin/ruby
- EXECUTABLE DIRECTORY: /Users/george/.gem/ruby/1.9.3/bin
- SPEC CACHE DIRECTORY: /Users/george/.gem/specs
- RUBYGEMS PLATFORMS:
- …Run Code Online (Sandbox Code Playgroud) 我在 Rails4 项目中使用 ckeditor。我尝试了 ckeditor gem 和 ckeditor_rails gem 来提供 ckeditor 库。
这里有多个帖子,人们希望删除 ckeditor 上下文菜单,以便可以显示本机浏览器上下文菜单。
这通常是为了启用浏览器拼写检查器而不是 ckeditor 付费/广告拼写检查器。
ckeditor-3-6-3-启用浏览器拼写检查并禁用上下文菜单
如何禁用 ckeditor 上下文菜单/20229730#20229730
第三个链接的回复最多,但没有一个被普遍接受。一般来说,答案是通过将以下内容放入 ckeditor config.js 中来删除 contextmenu 插件
config.removePlugins = 'contextmenu';
Run Code Online (Sandbox Code Playgroud)
还有人建议上下文菜单依赖于其他插件,并且不同的人也添加了许多其他要删除的插件。
一篇有用的文章建议在控制台中运行以下代码来建立依赖关系。
$.each(CKEDITOR.plugins, function(k, v){
v.requires && console.log("Plugin '" + k + "' requires: " + v.requires)
})
Run Code Online (Sandbox Code Playgroud)
这似乎工作得很好,并表明 tabletools 和 liststyle 插件依赖于上下文菜单。所以我们最终得到
config.removePlugins = 'liststyle,tabletools,contextmenu';
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不会禁用我正在使用的 ckeditor 版本中的上下文菜单(4.4.6 通过在 config.js 中添加警报(CKEDITOR.version)建立)
最后建议在config.js中使用以下代码
CKEDITOR.on('instanceReady', function(ev) {
ev.editor.editable().addClass('cke_enable_context_menu')
});
Run Code Online (Sandbox Code Playgroud)
没有关于如何禁用上下文菜单的建议,但无论如何,这对我来说没有什么区别。
对我来说,这是一个令人震惊的问题,因为 ckeditor 上下文菜单隐藏了浏览器拼写建议,并且它包含的剪切和粘贴选项实际上不起作用,而只是打开浏览器对话框。
您的浏览器安全设置不允许编辑器自动执行复制操作。请使用键盘(Ctrl/Cmd+C)。
在所有其他方面,ckeditor 似乎确实是功能最好的编辑器。
该eternicode Twitter的引导日期选择一旦弹出<input>场它连接到得到关注,你可以通过按Tab键到日期选择器领域上看到官方演示页面.
相反,我希望它只在点击时打开.理想情况下,日期选择器只会在点击日历图标时弹出.
如何防止它突然出现焦点?
我有一个客户端模型,其中有_many 联系人
用户是否可以创建、更新或编辑取决于客户端而不是联系人,而销毁取决于联系人本身。
在 ContactPolicy 类中,我可以简单地检查 @contact.client 以查看用户是否可以访问,这很好。
但是,对于 List 方法,我没有一个联系人,而是一个 @client.contacts 列表,因此没有简单的方法可以告诉 Pundit 允许什么。
我不确定 Pundit 应该如何处理这个问题。
请注意,我不想要范围,因为它是是或否取决于客户记录
我已经开始在Rails 3应用程序中使用audited gem.
它工作正常,但我有一个问题,我有一个大文本列的表.我不希望在此列中的数据保存在审计表中的"audited_changes"作为表将在尺寸上吹出来.
我知道我可以用以下内容来禁止对该列的审计:except =>:my_big_text_column
因此,在总结我也想知道用户编辑文本,但我不希望保存每次的文本的副本.如果我取消对该列的审核,如果他们编辑该列,我将完全没有审核.