小编Ole*_*ann的帖子

带有Rails 2.3.2的MySQL全文索引(迁移问题)

我在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)

mysql sql ruby-on-rails mysql-error-1170

7
推荐指数
2
解决办法
3687
查看次数

如何将$ stateParams从ui-router传递给service in service?

我有一个路由来检索单个帖子和一个服务来查询我的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

7
推荐指数
1
解决办法
9433
查看次数

Wails -s3 gem和right_aws gem之间的Rails Paperclip冲突.怎么解决?

对于新的应用程序,我想使用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)

ruby-on-rails amazon-s3 paperclip right-aws

6
推荐指数
1
解决办法
7931
查看次数

Rails:如何在生产模式下从rake任务中写入自定义日志文件?

我正在尝试在运行rake任务时写入我的日志文件.它在开发模式下工作正常,但是一旦切换到生产环境,就不会向日志文件写入任何内容.

我在这里读到

如何在Ruby on Rails中为自己的rake任务使用自定义日志?

这是正常的行为,并在灯塔中找到了#wontfix票.

我的问题:有没有办法输出,在我的rake任务运行时发生了什么?它执行一些爬行并运行数小时.我希望输出进入特定的日志文件,如/log/crawler.log

现在我只是用这个命令写入日志文件:

ActiveRecord::Base.logger.info "Log Text"
Run Code Online (Sandbox Code Playgroud)

谢谢!

rake logging ruby-on-rails web-crawler

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

Amazon SQS是正确的选择吗?Rails性能问题

我即将发布具有常见网络功能(消息,墙壁等)的rails应用程序.我想使用某种后台处理(很可能是Bj)来从请求/响应周期中卸载任务.

当用户通过电子邮件邀请朋友加入和收发电子邮件时,就会发生这种情况

我不确定是否应该在我的数据库中删除这些邀请和通知,使用模型,然后每隔x分钟使用一个工作进程处理它,或者我是否应该使用Amazon SQS,存储消息并邀请那里并让我的工作人员从Amazon SQS检索它以进行处理(发送邀请/通知).

亚马逊的方法会从我的数据库中卸载,但我想从那里检索消息的速度较慢.

你怎么看?

ruby-on-rails backgroundworker amazon-sqs amazon-web-services

5
推荐指数
1
解决办法
4233
查看次数

Java/Maven 混淆“不支持的主要.次要版本 51.0”

我正在尝试下载并安装这个 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)

java maven unsupported-class-version

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

如何在不使用 copy_exlude 的情况下使用 Capistrano 3 忽略文件

在 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 存储库中但不一定在我的服务器上的某些文件?

capistrano capistrano3

5
推荐指数
1
解决办法
1579
查看次数

如何生成与JWT一起使用的HS512密钥

我正在使用Guardian通过Elixir/Phoenix应用程序实现JWT身份验证.我正在使用HS512算法.我需要一把钥匙.这个密钥是否有任何条件,只要它必须是512位或更长?它可以是任意字符串,对吧?

encryption elixir jwt

5
推荐指数
2
解决办法
9591
查看次数

PostgreSQL:带有jsonb列的pg_trgm全文搜索?

我有一个带有jsonb列的表,用于存储变量数据。我想搜索此列并找到片段(前导或尾随空格)。我想我知道如何对文本列执行此操作,但无法绕过如何对文本列执行此操作jsonb

我想实现两种方案:

  1. 仅搜索jsonb列内的特定键(例如 data->>company
  2. 搜索整jsonb

对于文本列,我使用pg_trgm生成杜松子酒索引。

安装扩展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)

postgresql

5
推荐指数
0
解决办法
725
查看次数

已保存更改至属性?在方法内部调用时总是返回 false

所以我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 ruby-on-rails ruby-on-rails-5

5
推荐指数
1
解决办法
3327
查看次数