我在Rails 2.3.2应用程序中使用MySQL全文索引.我在迁移中通过本机SQL添加了索引.但是有一个已知问题导致schema.rb出现问题.Rails不了解全文索引并尝试创建普通索引.从schema.rb创建数据库时会出错(例如测试,规格等):
Mysql::Error: BLOB/TEXT column 'text' used in key specification without a key length: CREATE INDEX `fulltext_sms` ON `sms` (`text`)
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有猴子修补Rails的情况下在Rails 2.3.2中解决这个问题?如果没有,最好的方法是什么?
谢谢!
我的迁移:
class FulltextIndexCustomersSmsMessage < ActiveRecord::Migration
def self.up
execute('ALTER TABLE sms ENGINE = MyISAM')
execute('ALTER TABLE customers ENGINE = MyISAM')
execute('CREATE FULLTEXT INDEX fulltext_sms ON sms (text(500))')
execute('CREATE FULLTEXT INDEX fulltext_customer ON customers (fullname(255))')
end
def self.down
execute('ALTER TABLE sms ENGINE = innodb')
execute('ALTER TABLE customers ENGINE = innodb')
execute('DROP INDEX fulltext_sms ON sms')
execute('DROP INDEX fulltext_customer ON …Run Code Online (Sandbox Code Playgroud) 我有一个路由来检索单个帖子和一个服务来查询我的API这样做.但我需要将参数从URL传递给服务,以便我可以正确调用API.我无法理解如何做到这一点.
这是我到目前为止所提出的.我遗漏了与此问题无关的内容.
谢谢你的帮助!
路由
myModule.config([
'$stateProvider',
'$urlRouterProvider',
'$locationProvider',
function($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('post', {
url: '/posts/:hash_id/:slug',
templateUrl: '/js/app/views/post.html',
controller: 'PostCtrl',
resolve: {
postPromise: ['posts', function(posts, $stateParams){
//returns undefined
console.log($stateParams);
return posts.getOne($stateParams);
}]
}
})
// etc
Run Code Online (Sandbox Code Playgroud)
服务
myModule.factory('posts', ['$http', 'auth', function($http, auth){
var o = {
posts: [],
post: {}
};
o.getOne = function(params) {
// Returns undefined
console.log(params);
return $http.get('/api/v1/posts/' + params.hash_id).success(function(data){
angular.copy(data, o.post);
});
};
return o;
}])
Run Code Online (Sandbox Code Playgroud) javascript dependency-injection angularjs angularjs-service angular-ui-router
对于新的应用程序,我想使用paperclip将文件存储到S3.我已经为另一个应用程序安装了aws-s3 gem.这似乎会导致一些问题,因为Paperclip应该使用right_aws但是正在尝试使用aws-s3 gem.但我不想从我的系统中删除aws-s3 gem.有没有办法解决这个冲突?也许通过强制回形针使用right_aws?或者通过更改配置?
我的设置
# enviroment.rb
config.gem 'right_aws'
# my model with the attachment
has_attached_file :thumbnail,
:styles => { :thumb => "160x120>" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/amazons3.yml",
:path => ":provider/:attachment/:id_:style.:extension"
# config/amazons3.yml
development:
bucket: bucketname
access_key_id: secret
secret_access_key: secret
test:
bucket: bucketname
access_key_id: secret
secret_access_key: secret
production:
bucket: bucketname
access_key_id: secret
secret_access_key: secret
# The Error in the console
ArgumentError: wrong number of arguments (5 for 4)
from /Library/Ruby/Gems/1.8/gems/right_http_connection-1.2.4/lib/net_fix.rb:85:in `send_request_with_body_stream'
from /Library/Ruby/Gems/1.8/gems/right_http_connection-1.2.4/lib/net_fix.rb:85:in `exec'
from /Library/Ruby/Gems/1.8/gems/right_http_connection-1.2.4/lib/net_fix.rb:144:in `request'
from …Run Code Online (Sandbox Code Playgroud) 我正在尝试在运行rake任务时写入我的日志文件.它在开发模式下工作正常,但是一旦切换到生产环境,就不会向日志文件写入任何内容.
我在这里读到
如何在Ruby on Rails中为自己的rake任务使用自定义日志?
这是正常的行为,并在灯塔中找到了#wontfix票.
我的问题:有没有办法输出,在我的rake任务运行时发生了什么?它执行一些爬行并运行数小时.我希望输出进入特定的日志文件,如/log/crawler.log
现在我只是用这个命令写入日志文件:
ActiveRecord::Base.logger.info "Log Text"
Run Code Online (Sandbox Code Playgroud)
谢谢!
我即将发布具有常见网络功能(消息,墙壁等)的rails应用程序.我想使用某种后台处理(很可能是Bj)来从请求/响应周期中卸载任务.
当用户通过电子邮件邀请朋友加入和收发电子邮件时,就会发生这种情况
我不确定是否应该在我的数据库中删除这些邀请和通知,使用模型,然后每隔x分钟使用一个工作进程处理它,或者我是否应该使用Amazon SQS,存储消息并邀请那里并让我的工作人员从Amazon SQS检索它以进行处理(发送邀请/通知).
亚马逊的方法会从我的数据库中卸载,但我想从那里检索消息的速度较慢.
你怎么看?
ruby-on-rails backgroundworker amazon-sqs amazon-web-services
我正在尝试下载并安装这个 Maven 插件:
https://github.com/mirkonasato/graphipedia
我cd在目录中并运行
mvn clean install
Run Code Online (Sandbox Code Playgroud)
我今天在 Mac 上使用 homebrew 安装了 mvn,所以它应该是最新的。我收到的错误是:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project graphipedia-dataimport: Compilation failure
[ERROR] error: Exception thrown while constructing Processor object: org/neo4j/kernel/impl/annotations/ServiceProcessor : Unsupported major.minor version 51.0
Run Code Online (Sandbox Code Playgroud)
我用 google 搜索了这个错误,发现有几个人说,原因可能是旧的 Java 版本。所以我检查了我的系统偏好设置,它显示 Java 7。
但我真的不相信这一点并跑了
mvn --version
Run Code Online (Sandbox Code Playgroud)
这给了我这个输出
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T22:58:10+02:00)
Maven home: /usr/local/Cellar/maven/3.2.3/libexec
Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: de_DE, platform encoding: MacRoman
OS name: "mac os …Run Code Online (Sandbox Code Playgroud) 在 Capistrano 2 中,可以使用 copy_exclude 排除 Git 存储库中的某些文件:
set :copy_exclude, %w{.git .DS_Store web concept config lib}
Run Code Online (Sandbox Code Playgroud)
这在 Capistrano 3 中不再可能。如何排除我想要在 Git 存储库中但不一定在我的服务器上的某些文件?
我正在使用Guardian通过Elixir/Phoenix应用程序实现JWT身份验证.我正在使用HS512算法.我需要一把钥匙.这个密钥是否有任何条件,只要它必须是512位或更长?它可以是任意字符串,对吧?
我有一个带有jsonb列的表,用于存储变量数据。我想搜索此列并找到片段(前导或尾随空格)。我想我知道如何对文本列执行此操作,但无法绕过如何对文本列执行此操作jsonb。
我想实现两种方案:
data->>company)jsonb列安装扩展pg_trgm:
CREATE extension if not exists pg_trgm;
Run Code Online (Sandbox Code Playgroud)
创建表和索引:
CREATE TABLE tbl (
col_text text,
col_json jsonb
);
CREATE INDEX table_col_trgm_idx ON tbl USING gin (col_text gin_trgm_ops);
Run Code Online (Sandbox Code Playgroud)
查询示例:
SELECT * FROM tbl WHERE col_text LIKE '%foo%'; -- leading wildcard
SELECT * FROM tbl WHERE col_text ILIKE '%foo%'; -- works case insensitive as well
Run Code Online (Sandbox Code Playgroud)
用jsonb列尝试相同操作失败。如果我尝试索引整个列
CREATE INDEX table_col_trgm_idx ON tbl USING gin (col_json gin_trgm_ops);
Run Code Online (Sandbox Code Playgroud)
我得到错误
ERROR (datatype_mismatch): …Run Code Online (Sandbox Code Playgroud) 所以我after_update在模型中有一个回调ActiveRecord来通知外部服务。仅当更新几个属性时才应调用此函数。因此,我将调用saved_change_to_attribute?封装在一个方法中,然后在回调过滤器中使用该方法:
after_update :tell_service!, if: :update_for_service?
def update_for_service?
saved_change_to_name? ||
saved_change_to_city?
end
Run Code Online (Sandbox Code Playgroud)
现在update_for_service?总是回来false,我不明白为什么。
在控制台中:
> p = Person.last
> p.name = 'Tom'
> p.save
true
> p.saved_change_to_name?
true
> p.update_for_service?
false
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
activerecord ×1
amazon-s3 ×1
amazon-sqs ×1
angularjs ×1
capistrano ×1
capistrano3 ×1
elixir ×1
encryption ×1
java ×1
javascript ×1
jwt ×1
logging ×1
maven ×1
mysql ×1
paperclip ×1
postgresql ×1
rake ×1
right-aws ×1
sql ×1
web-crawler ×1