我正在使用带有ruby的datamapper将数据存储到某些表中.
有几个表有非常大量的信息,我想在用户"重建数据库"时清除它们(它基本上删除了所有内容并重新计算数据).
我最初尝试使用Forum.all.destroy并为所有不同的表做了它,但我注意到其中一些只是没有从phpmyadmin中删除.我只能想象它因为外键.虽然我真的不知道,因为我的其他表格已成功删除.更不用说,无论如何,它只是'零',所以键不会达到非常大的数字(如#500,000键).
然后我尝试使用下面的代码运行它,但由于"外键约束",它没有清除表格.我想强迫它工作,因为我知道一个事实我正在清理所有相互依赖的表(我只是没有清除2个表,一个设置表和一个随机存储表,两者都没有使用外键).
到目前为止我有......
adapter = DataMapper.repository(:default).adapter
adapter.execute('TRUNCATE TABLE `forums`, `dates`, `remarks`');
Run Code Online (Sandbox Code Playgroud)
这很好,除了mysql语法显然是错误的.所以这是第一件事
我在phpmyadmin中逐一做到这一点,当我这样做的时候,它说
Cannot truncate a table referenced in a foreign key constraint
Run Code Online (Sandbox Code Playgroud) 我有一个m3.xlargeEC2实例,我PHP 5.5.11今天更新了.
有了这个更新,它覆盖php55-pecl-apc了php55-pecl-apcu.
在阅读和实验之后,我的理解是APC已被替换OPCache,除了可以带回来的关键值存储APCu.
在将我的配置调整到看起来合理的东西之后,在登录时使用Wordpress现在非常慢,至少300-900ms更糟糕(前端通过清漆缓存,并且工作完美...但是当你使用管理员时故意不是缓存,而是作为罪恶缓慢).
我升级时做了一系列基准测试,每个步骤的样本量很小.随着我的继续,它的恶化程度越来越差.
-->-->现在我只是闲着OPCache,没有APCu.
对于我的设置我使用最新的wordpress,一些大插件,但我不能把它们取下,因为它们很重要.幸运的是,清漆可以完成大部分工作.我的网站根目录有4个内核,16GB内存,~10k文件.我也没有真正的硬核应用程序或除了wordpress之外的任何东西,它是一个相当普通的设置.我认为这是可能有用的东西.
配置:
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=0
opcache.revalidate_path=0
opcache.save_comments=0
opcache.load_comments=0
opcache.fast_shutdown=1
opcache.enable_file_override=0
opcache.optimization_level=0xffffffff
opcache.inherited_hack=1
opcache.dups_fix=0
opcache.blacklist_filename=/etc/php-5.5.d/opcache*.blacklist
opcache.max_file_size=2M
opcache.consistency_checks=1
opcache.force_restart_timeout=180
opcache.error_log=/var/log/php-fpm/5.5/opcache.log
opcache.log_verbosity_level=1
opcache.preferred_memory_model=
opcache.protect_memory=0
Run Code Online (Sandbox Code Playgroud) 这绝对是在推动我!!&&%&$ insane ...它无视我能想到的一切.
这个角色就在这里...... " "
在这些引号之间...打开谷歌浏览器并检查.你会看到它 ...正常吗?现在右键单击并实际查看此堆栈溢出页面的来源.这是一个常规的空间...(另外,我复制的角色是一个真实的空间).
我可以理解它是否是某种富文本编辑器或其他东西,但在原始html源代码是一个常规空间,那么是什么给出了?
这里的只是按下空格键(其中正常工作)... " ".
你甚至可以将它复制并粘贴到任何地方并造成严重破坏,并将镀铬放在 任何地方.尽管在剪贴板中复制的内容只是一个空格.
我有这些愚蠢的角色随机出现在我的网站上,我不知道它们来自哪里,或者为什么google将SPACE转换成了一个空格.
我试过检查实际的字符代码,这是我能找到的所有东西的常规空间......
我尝试的每一种方法都将它显示为一个NORMAL空间......所以给出了什么?
如果我使用红宝石," ".ord我会得到32.如果我用破碎的空间做的话我也会得到32.
请帮助我失去理智.
编辑:你可以证明这个...在这个页面上查看源代码,你会看到两个" "像正常的空.现在看一下控制台,只有一个是a ,但原始资源是相同的.
不使用chrome的人的图像(这是通过chrome dev工具查看此帖子): 
这是您在查看源代码时看到的相同文本的HTML ...无法找到.

我环顾了古尔,但没有找到任何好的答案.它是否将数据存储在一个大文件中?使用哪些方法来使数据访问更快,而不仅仅是读取和写入常规文件?
我已经在一段时间内阅读了关于各种SO线程,指南等的内容......但所有答案都是矛盾和矛盾的.
似乎有很多类似的方法,很多答案都说使用不同的方法.
sanitizesanitize_conditionssanitize_sqlsanitize_sql_arraysanitize_sql_for_assignmentsanitize_sql_for_conditionssanitize_sql_hashsanitize_sql_hash_for_assignmentsanitize_sql_hash_for_conditionssanitize_sql_like我正在尝试编写一个"原始查询"适配器,它允许我运行原始的Postgres查询,但允许我插入来自危险用户输入的我自己的参数.
我不能在这几个实例中使用AR,因为我正在进行复杂的纬度/经度计算,聚合函数,复杂子查询等.
到目前为止,我尝试了两种方法:
方法1
对于这种方法,我不知道是否sanitize是上述的最佳选择,或者它是否适用于100%的情况......(我只使用Postgres)
class RawQuery
def exec(prepared, *params)
prepared = query.dup
params.flatten.each_with_index do |p, i|
prepared.gsub!("$#{i + 1}", ActiveRecord::Base.sanitize(p))
end
ActiveRecord::Base.connection.exec_query(prepared)
end
end
Run Code Online (Sandbox Code Playgroud)
琐碎的用法示例(当然通常不会这么简单,或者我只会使用AR):
RawQuery.new.exec('SELECT * FROM users WHERE name = $1', params[:name])
此外,它似乎sanitize代表quote.但根据这篇SO帖子说它只是用单引号包装东西并不安全......所以我不知道.
方法2
我不确定这是否同样安全,但它似乎使用了一个实际的PG准备功能(我假设它是100%安全的).唯一的问题是rails不会将其打印到控制台,也不包括SQL执行时间(这会破坏我的分析工具).
class RawQuery
def prepare(query, *params)
name = "raw_query_#{SecureRandom.uuid.gsub('-', '')}"
connection = ActiveRecord::Base.connection.raw_connection
connection.prepare(name, query)
connection.exec_prepared(name, params)
end
end
Run Code Online (Sandbox Code Playgroud)
使用方式相同:
RawQuery.new.prepare('SELECT * FROM …
我跑了bundle update并更新sprockets到3.0.0.
当我尝试通过Capistrano 3部署时,我收到以下错误:
INFO [e54ac5ca] Running /usr/bin/env cp /var/www/testapp/releases/20150414002210/public/assets/manifest* /var/www/testapp/releases/20150414002210/assets_manifest_backup as deploy@xx.xxx.xxx.xx
DEBUG [e54ac5ca] Command: cd /var/www/testapp/releases/20150414002210 && /usr/bin/env cp /var/www/testapp/releases/20150414002210/public/assets/manifest* /var/www/testapp/releases/20150414002210/assets_manifest_backup
DEBUG [e54ac5ca] cp: cannot stat ‘/var/www/testapp/releases/20150414002210/public/assets/manifest*’
DEBUG [e54ac5ca] : No such file or directory
DEBUG [d2c5a990] cp: cannot stat ‘/var/www/testapp/releases/20150414002210/public/assets/manifest*’
DEBUG [d2c5a990] : No such file or directory
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@xx.xxx.xxx.xxx: cp exit status: 1
cp stdout: Nothing written
cp stderr: cp: cannot stat ‘/var/www/testapp/releases/20150414002210/public/assets/manifest*’: No such file …Run Code Online (Sandbox Code Playgroud) 我刚刚从5.1升级到5.2,我对这种存储机密的"更好"方法感到困惑......
也许我不理解,但似乎现在的开发和生产已"合并"成一个单一的SECRET_KEY_BASE,以及master.key...这是正确的?
如果没有,我如何使用单独的主密钥并SECRET_KEY_BASE在开发中?
如果我让开发人员帮助我并且我不希望他们知道我在生产中使用的主密钥(或秘密)怎么办?
这让我疯狂.
我正在尝试使用ActiveRecord创建一个简单的初学者应用程序来执行简单的数据库任务.我不使用铁轨.
我一直收到错误:
RuntimeError: Please install the mysql adapter: `gem install activerecord-mysql-adapter` (Could not find mysql (~> 2.8.1) amongst [actionmailer-3.1.3, actionpack-3.1.3, activemodel-3.1.3, activerecord-3.1.3, activerecord-sqlserver-adapter-3.1.4, activeresource-3.1.3, activesupport-3.1.3, ansi-1.4.1, arel-2.2.1, bigdecimal-1.1.0, builder-3.0.0, bundler-1.0.21, capistrano-2.9.0, coffee-rails-3.1.1, coffee-script-2.2.0, coffee-script-source-1.1.3, daemons-1.1.4, erubis-2.7.0, eventmachine-0.12.10, execjs-1.2.9, highline-1.6.8, hike-1.2.1, hpricot-0.8.5, i18n-0.6.0, io-console-0.3, jquery-rails-1.0.19, json-1.6.3, mail-2.3.0, mime-types-1.17.2, minitest-2.5.1, multi_json-1.0.4, net-scp-1.0.4, net-sftp-2.0.5, net-ssh-2.2.1, net-ssh-gateway-1.1.0, nokogiri-1.5.0, polyglot-0.3.3, rack-1.3.5, rack-cache-1.1, rack-mount-0.8.3, rack-protection-1.1.4, rack-ssl-1.3.2, rack-test-0.6.1, rails-3.1.3, railties-3.1.3, rake-0.9.2.2, rdoc-3.11, rockhands-0.0.6, sass-3.1.11, sass-rails-3.1.5, shotgun-0.9, sinatra-1.3.1, sprockets-2.0.3, sqlite3-1.3.4, thin-1.3.1, thor-0.14.6, tilt-1.3.3, treetop-1.4.10, turn-0.8.3, tzinfo-0.3.31, uglifier-1.1.0]) …Run Code Online (Sandbox Code Playgroud) 他们主页上的演示表几乎与我正在使用的完全相同(特别是分页),除了每行都有一个要点击的区域:
<a href="#" class="show-post"><%= Post.title %></a>
此链接打开一个jquery UI模式对话框,显示一些请求的ajax信息.
第1部分(已解决),见下文第2部分
我正在尝试运行一个在第一页上正常工作的onclick事件,但是一旦我转到第2页(或任何其他),它就会停止工作.我检查了源代码以确保它在所有代码中都没有做任何有趣的事情(所有行,甚至是分页隐藏的行)
有任何想法吗?
$(function() {
$('#dialog').dialog({
autoOpen: false,
resizable: false,
maxHeight: 600,
width: 650,
modal: true,
beforeClose: function close() {
$('#dialog').html('');
}
});
$('.show-post').click(function() {
clickLink(this);
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
感谢那些回答我问题的人!我解决了这个问题.
第2部分
我的下一个"问题"ID就像开始工作一样......我正在使用左右箭头键让他们"扫描"到下一行或上一行,并显示信息.这与关闭它然后必须单击下一个相反.
当你到达第一页的底部或第二页的顶部时,我想这样做,分别隐藏下一个/上一个将自动加载该页面,转到顶部(或底部),然后打开该对话框在另一页上排.
继承我的点击功能(我知道它可能没有最好的结构......我对jquery很新)
$(document).ready(function() {
oTable = $('#posts').dataTable({
"bJQueryUI": true,
"iDisplayLength": 400,
"bAutoWidth": false,
"sPaginationType": "full_numbers",
"aLengthMenu": [[-1, 400, 100, 50], ["All", 400, 100, 50]]
});
$(this).keydown(function(e) {
var id = $("#dialog").attr("data-id");
currentPost = $("#posts tr[data-id=" + id …Run Code Online (Sandbox Code Playgroud) 我正在开发一个不会在生产中缩小CSS或JS的项目.
不幸的是,我从来没有遇到过这个问题,而且我对资产管道如何详细调试问题并不熟悉.
我的问题是,我需要检查哪些要点/设置以确保启用?
它正确地将不同的文件组合成一个JS和CSS文件......它只是没有缩小.
到目前为止,我已经添加config.assets.js_compressor = :uglifier到production.rb,并uglifier到Gemfile,但仍然没有骰子.
我正在使用从Rails 3.2.12升级的Rails2
ruby ×6
activerecord ×2
mysql ×2
apc ×1
capistrano ×1
capistrano3 ×1
database ×1
datamapper ×1
datatables ×1
encoding ×1
javascript ×1
jquery ×1
opcache ×1
php ×1
postgresql ×1
unicode ×1
utf-8 ×1
wordpress ×1